如何在PrimeFaces中更新动态文本

时间:2019-06-14 14:15:23

标签: jsf primefaces

我是PrimeFaces(和JSF)的新手,我正在尝试根据检索到的数据更新对话框消息。

视图如下:

    <p:dialog id="userDialog" header="Confirmation" widgetVar="userDialog" dynamic="true"  modal="true" closable="fasle" width="680px" resizable="false">
    <h:form>
        <b>Email address #{userListView.email}</b> is already registered with the following user <b>#{userListView.firstName}</b> <b>#{userListView.lasttName}</b>:

        <b>Please confirm that you would like to proceed with adding an additional account for this User.</b><br />
        <hr />
        <div class="ui-confirm-dialog-footer">
            <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="pi pi-check" onclick="PF('userDialog').hide()" />
            <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="pi pi-times" onclick="PF('userDialog').hide()" />
        </div>
    </h:form>

控制器看起来像:

@ManagedBean(name = "userListView")
@ViewScoped
public class UserListView extends DataTableListView implements Serializable {

 .....some other code...

    public String getFirstName() {

       String firstName = "";

       List<UserMembership> membershipList = getMembershipList();

       if (!membershipList.isEmpty()) {
           UserMembership membership = membershipList.get(0);
           firstName = membership.getUser().getFirstName();
       }

       return firstName;
    }

    public String getLasttName() {

       String lastName = "";

       List<UserMembership> membershipList = getMembershipList();

       if (!membershipList.isEmpty()) {
           UserMembership membership = membershipList.get(0);
           lastName = membership.getUser().getLastName();
       }

       return lastName;
    }

    public String getEmail() {

       String email = "";

       List<UserMembership> membershipList = getMembershipList();

        if (!membershipList.isEmpty()) {
            UserMembership membership = membershipList.get(0);
            email = membership.getUser().getEmail();
        }

        return email;
    }

 ....some other code...
}

并生成对话框为

RequestContext.getCurrentInstance().execute("showDialog(userDialog')");

对于第一个用户来说,它可以正常工作,但是当我得到另一个对话框时,它将保留第一个用户的数据,而不用当前更新。

我也尝试添加

onHide="PF('userDialog').content.empty()"

进入对话框,但这将删除整个对话框内容。

然后如何用新数据破坏并刷新该对话框?

PS。 不知道我是否需要通过

完成此操作
   @PostConstruct
   public void init() {}

2 个答案:

答案 0 :(得分:1)

如果您使用的是Primefaces 7.0+,请交换已经提到的

reference_age            85       90       95
Outstanding Balance  2423.0  16350.0  13348.0
cumulative nco          NaN    645.0   1107.0

RequestContext.getCurrentInstance().update("userDialog");

如果我可以建议您,请为PrimeFaces.current().ajax().update("userDialog"); 设置一些ID,然后再使用完整的客户端ID,例如

<h:form>

BalusC已经在此线程Can I update a JSF component from a JSF backing bean method?

中回答了类似的问题

答案 1 :(得分:0)

就我而言,修复程序看起来像

RequestContext.getCurrentInstance().update(":userDialog");

.execute()部分之后。