Я разрабатываю приложение, использующее AngularJS для передней части и Spring для внутреннего блока.AngularJS Название поля сортировки весов
У меня есть в основном два класса объектов:
@Entity
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
/**
* idProject
*/
@Id
@GeneratedValue(strategy=AUTO, generator="PROJECT_SEQ")
private Integer idProject;
/**
* name
*/
@Column(name="PROJECT_NAME")
private String name;
/**
* date
*/
@Column(name="PROJECT_DATE")
private Date date;
/**
* technology
*/
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="ID_TECHNOLOGY", nullable=true)
@ForeignKey(name = "FK_PROJECT_TECHNOLOGY")
private Technology technology;
и
@Entity
public class Technology implements Serializable {
/**
* idTechnology
*/
@Id
@Column(name="ID_TECHNOLOGY", length=2)
private Integer idTechnology;
/**
* ID = 0 ==> "TechA"
* ID = 1 ==> "TechB";
* ID = 2 ==> "TechC";
* ID = 3 ==> "TechD";
* ID = 4 ==> "TechE"
*/
@Column(name="TECHNOLOGY", length=30)
private String technology;
То, что я пытаюсь сделать это, предоставляя список проектов для применения AngularJS.
Для этого я создал контроллер:
@Autowired
private ProjectAssembler projectAssembler;
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public PagedResources<ProjectResource> findAll(
@PageableDefault Pageable page,
PagedResourcesAssembler<Project> assembler) {
//Request
Page<Project> projectPage = projectRepo.findAll(page);
PagedResources<ProjectResource> resources = assembler.toResource(projectPage, projectAssembler);
return resources;
}
Как вы можете видеть, я использую Hateoas для создания списка JSON ресурсов и предоставление ссылок просмотра. В дополнение к этому я использую dozer для сопоставления класса Project с классом ProjectResource в ProjectAssembler.
public class ProjectResource extends ResourceSupport {
private Integer idProject;
private String projectName;
private Date projectDate;
private String technologyName;
И Ассемблер
@Component
public class ProjectResourceAssembler extends ResourceAssemblerSupport<Project, ProjectResource> {
@Autowired
private Mapper dozerBeanMapper;
public ProjectResourceAssembler() {
super(ProjectController.class, ProjectResource.class);
}
@Override
public ProjectResource toResource(Project entity) {
ProjectResource resource = createResourceWithId(entity.getIdProject(), entity);
return resource;
}
@Override
protected ProjectResource instantiateResource(Project entity) {
return dozerBeanMapper.map(entity, ProjectResource.class);
}
}
Цель состоит в том, что я хотел бы иметь разные имена полей в приложении интерфейсных AngularJS, что на заднем конце. Например, поля ProjectResources являются столбцами списка таблиц проектов в интерфейсе.
Моя проблема в том, что когда я хочу использовать сортировку в приложении angularjs, я использую имя полей переднего края, то же самое, когда я хочу фильтровать, поэтому, когда контроллер получает атрибут страницы, он не знает полей сортировки ,
Мой вопрос: есть ли у вас какие-либо советы, которые помогут мне использовать сортировку?