gpt4 book ai didi

java - Primefaces Ajax Action 不触发更新

转载 作者:行者123 更新时间:2023-11-30 11:50:47 25 4
gpt4 key购买 nike

我有下面的页面,一切正常...

除了在我点击删除按钮并在确认对话框中点击"is"之后我的页面没有改变......它应该显示没有那个用户的相同表格。

我尝试了很多东西,但我使用的是 Primefaces 3.0.M3我的表单表是服务器创建的,因此它应该可以使用 ajax。

有人知道哪里出了问题吗?

谢谢!

                <h:form id="main" prependId="false">
<p:dataTable var="user" value="#{userController.allUsers}" id="userTable">
<p:ajax event="rowEdit" update="@this" listener="#{userController.onEditRow}" />

<f:facet name="header">
#{bundle.ListOfUsers}
</f:facet>

<p:column headerText="#{bundle.USERNAME}" style="width:110px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{user.name}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{user.name}" style="width:110%"/>
</f:facet>
</p:cellEditor>
</p:column>


<p:column headerText="#{bundle.Login}" style="width:100px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{user.login}" />
</f:facet>
<f:facet name="input">
<h:outputText value="#{user.login}" />
</f:facet>
</p:cellEditor>
</p:column>

<p:column headerText="#{bundle.Roles}" style="width:180px;">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{user.rolesCollection}"/>
</f:facet>
<f:facet name="input">
<p:selectManyMenu value="#{user.rolesCollection}"
converter="rolesConverter"
style=" width:100%;">
<f:selectItems value="#{roleController.listOfRoles}"
var="roles"
itemLabel="#{roles.rolename}"
itemValue="#{roles}"
/>
</p:selectManyMenu>
</f:facet>
</p:cellEditor>
</p:column>

<p:column headerText="#{bundle.edit}" style="width:10px; overflow:visible;">
<p:rowEditor/>
</p:column>
<p:column headerText="#{bundle.delete}" style="width:10px; overflow:visible;">

<p:commandButton update=":main" oncomplete="confirmation.show()" image="ui-icon ui-icon-close" title="Delete" >
<f:param value="#{user.id}" name="userAction" />
</p:commandButton>

</p:column>

</p:dataTable>

<p:confirmDialog message="Are you sure? user:#{param['userAction']} " width="500"
header="Confirm" severity="alert" widgetVar="confirmation" >
<p:commandButton value="Yes sure" update="userTable" actionListener="#{userController.deleteAction( param['userAction'])}" oncomplete="confirmation.hide()" >
<f:param name="userAction" value="#{param['userAction']}" />
</p:commandButton>
<p:commandButton value="Not yet" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</h:form>

这是 Controller 方法

public void deleteAction(String id){

userFacade.remove(userFacade.find(Integer.parseInt(id)));

}

正在调用此方法并正在删除用户。

最佳答案

您需要在删除用户后重新加载 bean 的操作方法中的 allUsers 列表。

public void deleteAction(String userId) {
userService.delete(Long.valueOf(userId));
allUsers = userService.list();
}

否则 JSF 将只检索原始列表。您显然是在 View 范围 bean 的(后)构造函数中预填充列表,这就是 F5 起作用的原因。

关于java - Primefaces Ajax Action 不触发更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7773412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com