嗨我已经卡住了一段时间得到一个模态表单来更新,它正在加载数据,它正在调用函数 - 它只是没有将数据传回服务器
<h:form id="modal">
<p:dialog widgetVar="modalText" styleClass="modalSceneText" modal="true" dynamic="true" >
<p:panel id="sceneText">
<p:inputTextarea id="sceneName" immediate="true" style="width: 200px" rows="1" counter="labelCount" maxlength="20" counterTemplate="{0} characters remaining." value="#{CustomerDashboardController.selectedScene.title}"/><h:outputText id="labelCount" /><br/>
<p:inputTextarea id="sceneDescription" immediate="true" rows="10" cols="50" value="#{CustomerDashboardController.selectedScene.description}" counter="descriptionCount" maxlength="1000" counterTemplate="{0} characters remaining." autoResize="false" /><br/>
<h:outputText id="descriptionCount" />
</p:panel>
<p:ajax event="close" process="@form" immediate="true" update=":form:locationScenes" listener="#{CustomerDashboardController.saveSelectedScene()}" />
</p:dialog>
</h:form>
我已经在表格内外尝试过,我已经尝试了所有我能想到的东西..
sceneName&amp; sceneDescription正在加载正确的数据,当模态/对话框关闭时,它们只是不保存任何更改。 saveSelectedScene()
被称为罚款。
修改
我可以用
保存它<p:commandLink value="save" action="#{CustomerDashboardController.saveSelectedScene()}"/>
哪个不太漂亮。似乎问题是试图保存关闭事件。
答案 0 :(得分:1)
你的问题是从ajax组件中的侦听器调用的saveSelectedScene()方法正在使用inputTextarea的旧值。
作为一种解决方法,您可以使用remoteCommand组件并在close事件上调用它:
<h:form id="modal">
<p:remoteCommand name="rc" update=":form:locationScenes" actionListener="#{CustomerDashboardController.saveSelectedScene()}" />
<p:dialog widgetVar="modalText" styleClass="modalSceneText" modal="true" dynamic="true" >
<p:panel id="sceneText">
<p:inputTextarea id="sceneName" immediate="true" style="width: 200px" rows="1" counter="labelCount" maxlength="20" counterTemplate="{0} characters remaining." value="#{CustomerDashboardController.selectedScene.title}"/><h:outputText id="labelCount" /><br/>
<p:inputTextarea id="sceneDescription" immediate="true" rows="10" cols="50" value="#{CustomerDashboardController.selectedScene.description}" counter="descriptionCount" maxlength="1000" counterTemplate="{0} characters remaining." autoResize="false" /><br/>
<h:outputText id="descriptionCount" />
</p:panel>
<p:ajax event="close" process="@form" immediate="true" oncomplete="rc()" />
</p:dialog>
</h:form>
还要考虑代码中是否真的需要immediate =“true”
答案 1 :(得分:0)
您是否尝试从输入元素和p:ajax标记中删除immediate =“true”?在我看来,你不需要它 - 尤其不是在p:ajax标签上。
希望这有帮助!