Commandbutton不传递对象

时间:2014-03-25 18:37:44

标签: jsf primefaces jsf-2.2

我正在尝试创建包含数据表记录的Dilogue框。我正在使用最新版本的primfaces实现。

以下是XHTML代码,

 <h:form prependId="false" id ="dilogueForm" > 
                    <p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false"  
                              showEffect="fade" hideEffect="explode">  
                        <h:panelGrid id="display" columns="2" cellpadding="4">  

                            <h:outputText value="Project:" />  
                            <h:outputText value="#{saveData.selectedProject.prjName}" />  

                            <h:outputText value="Description:" />  
                            <h:outputText value="#{saveData.selectedProject.prjDesc}" />  

                            <h:outputText value="Client:" />  
                            <h:outputText value="#{saveData.selectedProject.prjClientname}" />  

                            <h:outputText value="Effort:" />  
                            <h:outputText value="#{saveData.selectedProject.prjEffort}" />  

                            <p:column headerText="Color">  
                                <h:commandButton value ="Save" actionListener="#{saveData.selectProjectFromDialog(selectedProject)}" />  
                            </p:column> 
                        </h:panelGrid>  
                    </p:dialog>  
   </h:form> 

下面:

从以下数据表定义填充所选项目:

<p:dataTable id="ProjectDataTable" var="p" value="#{saveData.projectList}"  
                                     selection="#{saveData.selectedProject}" selectionMode="single" rowKey="#{p.prjId}">  

在托管bean上,

public void selectProjectFromDialog(Project project) {  
     System.out.println("Project"+project.toString());
    RequestContext.getCurrentInstance().closeDialog(project);  
}  

这里我的项目值为null。

你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

<h:commandButton value ="Save" actionListener="#{saveData.selectProjectFromDialog(selectedProject)}" />  

应该是

<h:commandButton value ="Save" actionListener="#{saveData.selectProjectFromDialog(saveData.selectedProject)}" />  

答案 1 :(得分:1)

试试这个:

<p:commandButton value ="Save" process="@this, display" partialSubmit="true" ajax="true" action="#{saveData.selectProjectFromDialog(saveData.selectedProject)}" />