我创建了一个用于构建表单的页面,并且我使用PrimeFaces组件的信息中心来存储和订购表单的字段。问题是:当我尝试添加一个新的表单字段时,通过向Bean发送两个输入值,在set方法输入之前调用仪表板的get方法,因此我无法将输入值添加到仪表板
Form.xhtml:
<h:form id="dashboardForm">
<h:panelGrid columns="4" cellpadding="5">
<p:outputLabel for="formName" value="Form Name"></p:outputLabel>
<p:inputText id="formName" placeholder="Exemple Form"></p:inputText>
</h:panelGrid>
<hr></hr>
<p:layout>
<p:layoutUnit position="west" minSize="150">
<p:panel header="Add Field">
<h:panelGrid columns="2" cellpadding="5" id="newField">
<p:outputLabel for="newFieldName" value="Question"></p:outputLabel>
<p:inputTextarea id="newFieldName" value="#{monitoringFormDashboard.newFieldName}"></p:inputTextarea>
<p:outputLabel for="newFieldType" value="Type"></p:outputLabel>
<p:selectOneMenu immediate="true" id="newFieldType" value="#{monitoringFormDashboard.newFieldType}">
<f:selectItem itemLabel="Text" itemValue="0"></f:selectItem>
<f:selectItem itemLabel="Dropdown" itemValue="1"></f:selectItem>
<f:selectItem itemLabel="Boolean" itemValue="2"></f:selectItem>
</p:selectOneMenu>
</h:panelGrid>
<p:commandButton id="addNewField" value="Add" actionListener="#{monitoringFormDashboard.addField}" update="dashboard" image="ui-icon ui-icon-carat-1-e" />
</p:panel>
</p:layoutUnit>
<p:layoutUnit position="center">
<p:dashboard id="dashboard" binding="#{monitoringFormDashboard.dashboard}">
</p:dashboard>
</p:layoutUnit>
</p:layout>
</h:form>
当我按下Add commandButton时,bean上的方法执行顺序是:
所以这正是我需要的逆序。我首先需要newFieldName和newFieldName,然后再调用addField和至少getDashboard ......
如果需要,这是bean类:http://pastebin.com/fcCnAYNZ
我错过了什么?
答案 0 :(得分:0)