spring - 如何对 datagrid primefaces 中的数据进行排序?
问题描述
我正在尝试使用 commandlink 按钮对数据进行排序,因为它只会按 1 件事排序,即日期。
我在 NetBeans 中显示的错误“属性 sortBy 未在 outputText 中定义,未知属性“startDate””是否有任何解决方法可用于使用命令链接进行排序?或者当'我点击时,它会排序'“但不像用户必须从下拉列表中选择的选择菜单。
这是我的 index.xhtml 文件
<p:panel header="job" class="card card-w-title ui-fluid">
<p:panelGrid id="idSortBy" columns="2" layout="grid" styleClass="ui-panelgrid-blank form-group"
columnClasses="ui-grid-col-6,ui-grid-col-6">
<h:outputText value="Sort By : " style="font-weight:bold;"/>
<h:commandLink id="sort">
<h:outputText value="Date" sortBy="#{homeMBean.startDate}" style="color: black; font-weight: bold; "/>
</h:commandLink>
</p:panelGrid>
<p:dataGrid var="list" value="#{homeMBean.listJob}"
lazy="true"
columns="3" layout="grid"
rows="12" paginator="true" id="jobId"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginatorPosition="bottom" emptyMessage="Data Not Found"
rowsPerPageTemplate="6,12,16" class="no-border no-padding">
<p:panel style="text-align: left;" class="no-border no-padding">
<h:panelGroup class="no-border no-padding">
<h:panelGrid columns="1" style="width:100%;background-color: #f1a955;" class="no-border no-padding">
<h:outputText value="#{list.jobs}" style="font-weight: bold"/>
<h:outputText class="fa fa-map-marker" value=" #{list.region}, #{list.city}" style="margin-left: 7%;" />
<p:separator style="border-color: #ffffff; color: #ffffff;" />
<p:panelGrid id="idPgHeader" columns="3" layout="grid" styleClass="ui-panelgrid-blank form-group"
columnClasses="ui-grid-col-4,ui-grid-col-4,ui-grid-col-4">
<h:commandLink id="share">
<i class="fa fa-share-alt" style="color: black"/>
<h:outputText value=" Share" escape="false" style="color: black;"/>
</h:commandLink>
<h:commandLink id="save">
<i class="fa fa-heart-o" style="color: black"/>
<h:outputText value=" Save" escape="false" style="color: black;"/>
</h:commandLink>
<h:commandLink id="apply" action="form.xhtml?faces-redirect=true" target="_blank">
<i class="fa fa-hand-o-up" style="color: black"/>
<h:outputText value=" Apply" escape="false" style="color: black;"/>
</h:commandLink>
</p:panelGrid>
</h:panelGrid>
</h:panelGroup>
</p:panel>
</p:dataGrid>
</p:panel>
这是我的家MBean
@Controller
@SpringScopeView
@Data
public class HomeMBean extends AbstractManagedBean implements InitializingBean {
private final String apijobActive = "mstjobActive";
@Autowired
private BackendNoLoginService backendNoLoginService;
@Autowired
private BackendService backendService;
private LazyDataModelApiJPA<jobView> listjob;
@Override
public void afterPropertiesSet() throws Exception {
JSONObject jSONObject = new JSONObject();
listjob = new LazyDataModelApiJPA<jobView>(backendService,
apijobActive, null, jobView[].class) {
};
}
这是我的JobController
@PostMapping(value = "/page-request-active")
public List<LowonganKerjaProjection> getListPageRequestIsActive(
@RequestBody(required = true) JobViewWrapper wrapper) {
log.debug(wrapper.toString());
System.out.println("get to controller ");
PageRequest pageRequest = null;
if (wrapper.getPageReqWrapper().getSortField() == null) {
System.out.println("get to if controller pagereq");
pageRequest = PageRequest.of(
wrapper.getPageReqWrapper().getPage(),
wrapper.getPageReqWrapper().getSize());
} else {
System.out.println("get to else controller pagereq");
Sort sort = null;
String sortField = wrapper.getPageReqWrapper().getSortField();
if (sortField.equals("job")) {
sortField = "job_name";
} else if (sortField.equals("startDate")){
sortField = "start_date";
}
if (wrapper.getPageReqWrapper().getSortOrder().isAscending()) {
sort = Sort.by(sortField).ascending();
} else {
sort = Sort.by(sortField).descending();
}
pageRequest = PageRequest.of(
wrapper.getPageReqWrapper().getPage(),
wrapper.getPageReqWrapper().getSize(),
sort);
}
log.debug(pageRequest.toString());
System.out.println("Prepare to lazyView service");
return jobService.findLazyViewByIsActive(pageRequest);
}
解决方案
推荐阅读
- flutter - 从 JSON 值解码时如何删除引号和符号?扑
- angular - 为什么 CSP 评估程序警告没有发现绕过,如果我放置 script-src *.somesite.com,请确保此 URL 不提供 JSONP 回复或 Angular 库?
- r - 正则表达式找到最后两个引号之间的字符串“”?
- r - 如何四舍五入到最近的未来时间戳?
- javascript - 正则表达式允许以下符号
- ios - UIDocumentInteractioncontroller PDF 在圈导航栏上滚动和打印预览
- android - 默认电话 - 如何在通话过程中选择号码服务?
- python - python从一列查找列表并从不同列返回等效的ID
- c# - ServiceStack IContainerAdapter适配Autofac 5.2.0版本
- react-native - React Native,在 UseEffect 中调度后如何使用 Redux 存储?