选定的行在datalist JSF中未被选中
我在jsf中将datalist与primefaces一起使用,我面临的问题是,所选对象的bean类字段并没有更新到datalist的所选行,它总是给空对象。这是密码 查看文件:选定的行在datalist JSF中未被选中,jsf,primefaces,Jsf,Primefaces,我在jsf中将datalist与primefaces一起使用,我面临的问题是,所选对象的bean类字段并没有更新到datalist的所选行,它总是给空对象。这是密码 查看文件: `<?xml version="1.0"?>` <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:f="http://java.sun.com/j
`<?xml version="1.0"?>`
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head />
<h:body>
<h:form>
<p:dataList value="#{tableBean.getList()}" var="job" id="cars"
paginator="true" rows="5" effectSpeed="fast"
paginatorTemplate="{PreviousPageLink} {CurrentPageReport} {NextPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5" type="none">
<f:facet name="header">
Applicants List
</f:facet>
<p:column>
<div style="width: 200px">
<h:outputText value="Name:" style="margin-left:10px" />
<h:outputText value="#{job.name}" style="margin-left:10px" />
<br />
<h:outputText value="Applied for:" style="margin-left:10px" />
<h:outputText value="#{job.jobtitle}" style="margin-left:10px" />
<br />
<h:outputText value="Degree:" style="margin-left:10px" />
<h:outputText value="#{job.degree}" style="margin-left:10px" />
<br />
<h:outputText value="Experience:" style="margin-left:10px" />
<h:outputText value="#{job.experience}" style="margin-left:10px" />
<br />
<h:outputText value="Contact:" style="margin-left:10px" />
<h:outputText value="#{job.contact}" style="margin-left:10px" />
<br />
<h:commandLink value="Call for Interview" style="margin-left:10px"></h:commandLink>
</div>
<br/>
<p:commandButton icon="ui-icon-search"
actionListener="#{tableBean.printView}" title="View Detail">
<f:setPropertyActionListener value="#{job}"
target="#{tableBean.selectedJob}" />
</p:commandButton>
<p:separator id="separator" />
</p:column>
</p:dataList>
</h:form>
</h:body>
</f:view>
``
申请人名单
表bean类:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import DAO.JobApplicationDao;
import DTO.JobApplicationDto;
@ManagedBean
@ViewScoped
public class TableBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public JobApplicationDto selectedJob;
public TableBean() {
}
public List<JobApplicationDto> getList() {
List<JobApplicationDto> joblist = new ArrayList<JobApplicationDto>();
JobApplicationDao dao = new JobApplicationDao();
joblist =dao.getDroppedCv();
return joblist;
}
public JobApplicationDto getSelectedJob() {
return selectedJob;
}
public void setSelectedJob(JobApplicationDto selectedJob) {
this.selectedJob = selectedJob;
}
public void printView(ActionEvent event) {
try{
System.out.print("Selected Person "+getSelectedJob.getName());
}catch(Exception e){
}
}
import java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Logger;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入javax.faces.bean.ViewScoped;
导入javax.faces.event.ActionEvent;
导入DAO.job应用DAO;
导入DTO.jobApplicationTo;
@ManagedBean
@视域
公共类TableBean实现了可序列化{
/**
*
*/
私有静态最终长serialVersionUID=1L;
公共工作申请到选定的工作;
公共TableBean(){
}
公共列表getList(){
List joblist=new ArrayList();
JobApplicationDao=新的JobApplicationDao();
joblist=dao.getDroppedCv();
返回工作清单;
}
public Job ApplicationTo getSelectedJob(){
返回所选作业;
}
public void setselected job(job application to selected job){
this.selectedJob=selectedJob;
}
公共无效打印视图(ActionEvent事件){
试一试{
System.out.print(“所选人员”+getSelectedJob.getName());
}捕获(例外e){
}
}
}您可以像这样使用数据表选择
<p:dataList value="#{tableBean.getList()}" selection="#{tableBean.selectedJob}" var="job" id="cars"
paginator="true" rows="5" effectSpeed="fast"
paginatorTemplate="{PreviousPageLink} {CurrentPageReport} {NextPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5" type="none">
您应该将setPropertyActionListener与操作一起使用。在调用操作之前会调用侦听器。似乎setPropertyActionListener在actionListener之后被调用 将
actionListener=“#{tableBean.printView}”更改为action=“#{tableBean.printView}”
方法
public void printView() {
try{
System.out.print("Selected Person "+getSelectedJob.getName());
}catch(Exception e){
}
}
为了更好地理解使用什么,请参见此
首先,你说的选择是什么意思?单击p:commandButton
?p:dataList
没有选择属性。upps!很抱歉,我刚刚意识到,我以为这是datatable,我的错误。您可以尝试向commandButton添加process=“:form:cars”属性