Jsf 2 jsf中带对话框的行可编辑数据表列
我是JSF新手。我正在JSF primefaces中使用行可编辑数据表。在行可编辑数据表输入文本列中,它有两个ajax调用。一个是blur,另一个是Commandbuuton。我想从支持bean的这个输入文本列中获取值 这是我的密码:Jsf 2 jsf中带对话框的行可编辑数据表列,jsf-2,primefaces,Jsf 2,Primefaces,我是JSF新手。我正在JSF primefaces中使用行可编辑数据表。在行可编辑数据表输入文本列中,它有两个ajax调用。一个是blur,另一个是Commandbuuton。我想从支持bean的这个输入文本列中获取值 这是我的密码: <h:form id="frm1"> <p:dataTable var="fert" value="#{fertilizerEntryBean.fertList}" id="fertList" editable="true" scrollabl
<h:form id="frm1">
<p:dataTable var="fert" value="#{fertilizerEntryBean.fertList}" id="fertList" editable="true" scrollable="true" scrollWidth="900" scrollHeight="250" >
<p:ajax event="rowEdit" listener="#{fertilizerEntryBean.onEdit}" update=":frm1:messages :frm1:ha_amount" />
<p:ajax event="rowEditCancel" listener="#{fertilizerEntryBean.onCancel}" update=":frm1:messages :frm1:ha_amount" />
<p:column headerText="...." width="15">
<p:rowEditor />
</p:column>
<p:column headerText="Receiver Plot No." width="150">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{fert.receiverPlot}" /></f:facet>
<f:facet name="input">
<p:inputText id="receiverPlot" value="#{fert.receiverPlot}" size="15">
<p:ajax event="blur" listener="#{fertilizerEntryBean.loadReceiverDetails(fert)}" update="receiverCode,receiverName"/>
</p:inputText>
<p:commandButton icon="ui-icon-search" style="height: 25px;position: absolute;" onclick="receiver_dialog.show();"/>
</f:facet>
</p:cellEditor>
</p:column>
</p:datatable>
</h:form>
<h:form id="receiverForm">
<p:dialog widgetVar="receiver_dialog" id="receiver_dialog">
<p:dataTable id="receiver_table" value="#{fertilizerEntryBean.mediumFertModel}" selection="#{fertilizerEntryBean.selectedList}" selectionMode="single" var="fert" rows="10" liveScroll="true" paginator="true" paginatorPosition="bottom"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,20">
<p:ajax event="rowSelect" listener="#{fertilizerEntryBean.onRowSelect}" update=':frm1:fertList:receiverPlot'/>
<p:column id="state_id_column" headerText="Receiver Code">
<h:outputText value="#{fert.receiverPlot}"/>
</p:column>
</p:dataTable>
<p:commandButton style="alignment-adjust: central;" value='OK' onclick="receiver_dialog.hide();"/>
</p:dialog>
</h:form>
还有我的Bean类:
public class FertilizerEntryBean implements Serializable{
private List<FertModel> fertList=null;
private FertDataModel mediumFertModel;
private FertModel selectedList;
public List<FertModel> getFertList() {
return fertList;
}
public void setFertList(List<FertModel> fertList) {
this.fertList = fertList;
}
public FertDataModel getMediumFertModel() {
getReceiverCode();
return mediumFertModel;
}
public void setMediumFertModel(FertDataModel mediumFertModel) {
this.mediumFertModel = mediumFertModel;
}
public FertModel getSelectedList() {
return selectedList;
}
public void setSelectedList(FertModel selectedList) {
this.selectedList = selectedList;
}
public List<FertModel> getReceiverCode(){
Session session=HibernateUtil.getSessionFactory().openSession();
try{
List<DosVendormaster> vendorList=session.createCriteria(DosVendormaster.class).add(Restrictions.eq("vendortype", "CGRV")).add(Restrictions.eq("block", "X")).list();
if(vendorList.size()>0){
for (Iterator<DosVendormaster> it = vendorList.iterator(); it.hasNext();) {
DosVendormaster dosVendormaster = it.next();
fertList.add(new FertModel(dosVendormaster.getSapVendorcode()));
}
mediumFertModel=new FertDataModel(fertList);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
session.close();
}
return fertList;
}
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage(" Selected", ((FertModel) event.getObject()).getReceiverPlot());
FacesContext.getCurrentInstance().addMessage(null, msg);
FertModel fert=new FertModel();
fert.setReceiverPlot(((FertModel) event.getObject()).getReceiverPlot());
}
}
公共类FertifizerEntryBean实现可序列化{
私有列表fertList=null;
私有FertDataModel mediumFertModel;
私有FertModel selectedList;
公共列表getFertList(){
返回火种表;
}
公共无效设置列表(列表列表列表){
this.fertList=fertList;
}
公共FertDataModel getMediumFertModel(){
getReceiverCode();
返回介质模型;
}
公共无效setMediumFertModel(FertDataModel mediumFertModel){
this.mediumfert模型=mediumfert模型;
}
公共FertModel getSelectedList(){
返回所选列表;
}
公共作废集合选择列表(FertModel selectedList){
this.selectedList=selectedList;
}
公共列表GetReceiveCode(){
Session Session=HibernateUtil.getSessionFactory().openSession();
试一试{
List vendorList=session.createCriteria(DosVendormaster.class).add(Restrictions.eq(“vendortype”,“CGRV”)).add(Restrictions.eq(“block”,“X”)).List();
如果(vendorList.size()>0){
for(Iterator it=vendorList.Iterator();it.hasNext();){
DosVendormaster DosVendormaster=it.next();
添加(新的FertModel(dosVendormaster.getSapVendorcode());
}
mediumFertModel=新FertDataModel(fertList);
}
}捕获(例外情况除外){
例如printStackTrace();
}最后{
session.close();
}
返回火种表;
}
行上的公共无效选择(选择事件事件){
FacesMessage msg=新的FacesMessage(“选定的”((FertModel)event.getObject()).getReceivePlot());
FacesContext.getCurrentInstance().addMessage(null,msg);
FertModel fert=新的FertModel();
fert.setReceivePlot(((FertModel)event.getObject()).getReceivePlot());
}
}
您可以尝试以下操作:FacesContext.getCurrentInstance().getViewRoot().findComponent(id)
其中id类似于frm1:fert:(rowIndex):receiverPlot
。这就是如何找到组件并为该组件使用getValue的方法。您可以通过将rowIndexVar
attribute设置到您的数据表中来获取rowIndex现在我可以通过您的知识找到组件,但是我无法从数据表中为此组件设置所选值。您能否更准确地说明无法从数据表中为此组件设置所选值。如果您有问题使用rowSelect
检查此选项,我从数据表中获得了所选值。我的问题是将所选值设置到此组件中。