这里我又遇到了一个 JSF 问题,这次更多的是关于 Richfaces(4.2.1 final,JSF 2)。我有一个 eytended DataTable 并想添加新项目。有Journey
-objects 列表,每个属性都有 getter 和 setter。该表创建良好(列表中已经有一些项目)。现在我点击“添加新项目”按钮:
<a4j:commandButton ajax="true" value="Neue Fahrt hinzufügen"
actionListener="'{editorBean.prepareCreateJourney}" render="createJourneyPopupForm"
oncomplete="#{rich:component('createJourneyPopup')}.show()" />
editorBean 是SessionScoped,该方法被正确调用并创建一个新的Journey
被调用对象currentJourney
。出现一个弹出窗口,应该允许我插入一些输入:
<rich:popupPanel id="createJourneyPopup" modal="true">
<h:panelGrid id="createJourneyPopupForm" columns="3">
<h:outputLabel for="currentId" value="ID" />
<h:inputText id="currentId"
value="#{editorBean.currentJourney.journeyNumber}" />
<rich:message for="currentId" />
[...and more...]
</h:panelGrid>
<a4j:commandButton value="Save"
execute="currentId currentTrainType operator">
<f:ajax event="click" listener="#{editorBean.doCreateJourney}"
render=":vmsEditorForm:resultTable" />
<rich:componentControl target="createJourneyPopup" operation="hide" />
</a4j:commandButton>
<a4j:commandButton value="Abbrechen"
onclick="#{rich:component('createJourneyPopup')}.hide();" />
</rich:popupPanel>
当我单击按钮时,该方法doCreateJourney
被调用,但currentJourney
为空。它是Journey
创建后的默认对象。没有调用 setter,对输入字段进行提示。
我检查了两次名称,所有需要的对象都有 getter 和 setter。我试图改变范围,但没有效果。对象是相同的,在我创建的 prepare 方法Journey(id=151)
和 save 方法中它仍然是Journey(id=151)
.
这里发生了什么?制作一些对话框来创建和编辑数据对象并不难。感谢您的聆听和帮助!