JSF按钮没有';t向bean发送数据

JSF按钮没有';t向bean发送数据,jsf,Jsf,我有一些JSF页面和一些bean,在cae中,它正在编辑当前元素,我使用更新其他方法,我使用保存方法 我试着调试和思考按钮上的方法永远不会执行 这是我的JSF页面: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xml

我有一些JSF页面和一些bean,在cae中,它正在编辑当前元素,我使用更新其他方法,我使用保存方法

我试着调试和思考按钮上的方法永远不会执行

这是我的JSF页面:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>
        <title>Manage panel</title>
    </h:head>
    <h:body>
        <h3>Add/edit patient</h3>
        <h:form>           
            <c:set var="patient" value="#{manageBean.patient}" />
            <c:choose>
                <c:when test="#{patient!=null}">
                    <p:panel id="panel1" header="Patient" style="margin-bottom:10px;">  
                        <h:panelGrid columns="2">  
                            <h:outputLabel for="name" value="First  name" />  
                            <p:inputText id="firstName" required="true" value="#{patient.firstName}" />  

                            <h:outputLabel for="name" value="Family  name" />  
                            <p:inputText id="familyName" required="true" value="#{patient.familyName}" />  

                            <h:outputLabel for="name" value="Sex" />  
                            <p:selectOneMenu id="sex" value="#{patient.sex}">  
                                <f:selectItems value="#{manageBean.sex}"/>
                            </p:selectOneMenu>  

                            <h:outputLabel for="name" value="Birthday date" />  
                            <p:calendar value="#{patient.birthdayDate}" mode="inline" id="birthdayDate"/>  

                            <h:outputLabel for="name" value="Nationality" />  
                            <p:selectOneMenu id="nationality" value="#{patient.nationality}">  
                                <f:selectItems value="#{manageBean.nationality}"/>
                            </p:selectOneMenu>  

                            <h:outputLabel for="name" value="Adress" />  
                            <p:inputText id="adress" required="true" value="#{patient.adress}" />  

                            <h:outputLabel for="name" value="Phone number" />  
                            <p:inputMask id="phoneNumber" required="true" value="#{patient.phoneNumber}" mask="(999) 999-9999"/>
                        </h:panelGrid>  
                    </p:panel>  
                    <p:commandButton value="Update" type="submit" action="#{manageBean.update(patient)}" />  
                </c:when>   
                <c:otherwise>
                    <p:panel id="panel2" header="Patient" style="margin-bottom:10px;">  
                        <h:panelGrid columns="2">  
                            <h:outputLabel for="name" value="First  name" />  
                            <p:inputText id="firstName" required="true" value="" />  

                            <h:outputLabel for="name" value="Family  name" />  
                            <p:inputText id="familyName" required="true" value="" />  

                            <h:outputLabel for="name" value="Sex" />  
                            <p:selectOneMenu id="sex" value="">  
                                <f:selectItems value="#{manageBean.sex}"/>
                            </p:selectOneMenu>  

                            <h:outputLabel for="name" value="Birthday date" />  
                            <p:calendar mode="inline" id="birthdayDate"/>  

                            <h:outputLabel for="name" value="Nationality" />  
                            <p:selectOneMenu id="nationality" value="">  
                                <f:selectItems value="#{manageBean.nationality}"/>
                            </p:selectOneMenu>  

                            <h:outputLabel for="name" value="Adress" />  
                            <p:inputText id="adress" required="true" value="" />  

                            <h:outputLabel for="name" value="Phone number" />  
                            <p:inputMask id="phoneNumber" required="true" value="" mask="(999) 999-9999"/>
                        </h:panelGrid>  
                    </p:panel>  
                    <p:commandButton value="Save" action="#{manageBean.save(firstName, familyName, sex, birthdayDate, nationality, adress, phoneNumber)}" />  
                </c:otherwise>
            </c:choose>
        </h:form>      
    </h:body>
</html>

一旦在输入标记中给出value属性,它将直接将给定的值绑定到java类。在URJava类中创建类变量并绑定输入标记。例如: 在bean类中创建如下变量

private String firstName 
并创建getter和setter方法

<f:view>

    <h3>Add/edit patient</h3>

    <h:form>           
                <p:panel id="panel1" header="Patient" style="margin-bottom:10px;">  

                    <h:panelGrid columns="2">
                        <h:outputLabel for="name" value="First  name" />
                        <p:inputText id="firstName" required="true" value="#{manageBean.firstName}" />

                        <h:outputLabel for="name" value="Family  name" />  
                        <p:inputText id="familyName" required="true" value="#{manageBean.familyName}" />  

                        <h:outputLabel for="name" value="Sex" />  
                        <p:selectOneMenu id="sex" value="#{manageBean.sex}">  
                            <f:selectItems value="#{manageBean.sex}"/>
                        </p:selectOneMenu>  

                        <h:outputLabel for="name" value="Birthday date" />  
                        <p:calendar value="#{manageBean.birthdayDate}" mode="inline" id="birthdayDate"/>  

                        <h:outputLabel for="name" value="Nationality" />  
                        <p:selectOneMenu id="nationality" value="#{manageBean.nationality}">  
                            <f:selectItems value="#{manageBean.nationality}"/>
                        </p:selectOneMenu>  

                        <h:outputLabel for="name" value="Adress" />  
                        <p:inputText id="adress" required="true" value="#{manageBean.adress}" />  

                        <h:outputLabel for="name" value="Phone number" />  
                        <p:inputMask id="phoneNumber" required="true" value="#{manageBean.phoneNumber}" mask="(999) 999-9999"/>
                    </h:panelGrid>  
                </p:panel>  
                <p:commandButton value="Update" type="submit" action="#{manageBean.update}" />  

                    </h:form> 

添加/编辑患者

创建一个新的jsp页面并将这些代码复制粘贴到body标记中。 在java类中创建变量和getter setter方法。
Update应该是一个返回字符串的方法。

JSF应该如何知道发送给操作的参数值?你真的误解了在
UICommand
中可以传递给
操作的参数。它不是从inputText获取参数吗?inputText中的值在JSF的
updatemodel
阶段在模型中更新。因此,当您运行
save
方法时,
patient.getFirstName()
将已经返回您在inputText中设置的值。现在您只需在命令按钮中调用该方法。在测试中,给$而不是#JSTL将只取$。如果有任何异常或错误消息,请提供。为什么要使用
?您是否试图用JSF1.2代码回答JSF2问题?请注意,OP使用的是而不是JSP。
<f:view>

    <h3>Add/edit patient</h3>

    <h:form>           
                <p:panel id="panel1" header="Patient" style="margin-bottom:10px;">  

                    <h:panelGrid columns="2">
                        <h:outputLabel for="name" value="First  name" />
                        <p:inputText id="firstName" required="true" value="#{manageBean.firstName}" />

                        <h:outputLabel for="name" value="Family  name" />  
                        <p:inputText id="familyName" required="true" value="#{manageBean.familyName}" />  

                        <h:outputLabel for="name" value="Sex" />  
                        <p:selectOneMenu id="sex" value="#{manageBean.sex}">  
                            <f:selectItems value="#{manageBean.sex}"/>
                        </p:selectOneMenu>  

                        <h:outputLabel for="name" value="Birthday date" />  
                        <p:calendar value="#{manageBean.birthdayDate}" mode="inline" id="birthdayDate"/>  

                        <h:outputLabel for="name" value="Nationality" />  
                        <p:selectOneMenu id="nationality" value="#{manageBean.nationality}">  
                            <f:selectItems value="#{manageBean.nationality}"/>
                        </p:selectOneMenu>  

                        <h:outputLabel for="name" value="Adress" />  
                        <p:inputText id="adress" required="true" value="#{manageBean.adress}" />  

                        <h:outputLabel for="name" value="Phone number" />  
                        <p:inputMask id="phoneNumber" required="true" value="#{manageBean.phoneNumber}" mask="(999) 999-9999"/>
                    </h:panelGrid>  
                </p:panel>  
                <p:commandButton value="Update" type="submit" action="#{manageBean.update}" />  

                    </h:form>