如何在完成数据库更新后在jsf页面中显示消息

时间:2014-05-12 16:11:13

标签: database jsf message

我正在使用以下代码来编辑记录的值。代码工作正常。

<rich:popupPanel header="Edit Company Region" id="editCompanyRegionPane"
                            domElementAttachment="parent" width="230" height="115">
                            <h:form>
                            <h:panelGrid columns="3" id="editCompanyRegionGrid">
                                <h:inputHidden value="#{CompanyAdminPageModel.editCompanyRegion.companyRegionId}"
                                    id="editcompanyRegionId">
                                </h:inputHidden>
                                <h:message for="editcompanyRegionId" />
                                <h:column>                          
                                <h:outputText value="Name " />
                                <h:inputText value="#{CompanyAdminPageModel.editCompanyRegion.name}" 
                                    id="editCompanyRegionName">
                                </h:inputText>
                                <h:message for="editCompanyRegionName" />
                                </h:column>
                            </h:panelGrid>

                            <h:commandButton value="Update"
                                action="#{CompanyAdminPageModel.companyRegionUpdate}" render="table"
                                oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('editCompanyRegionPane')}.hide();}" />
                            <h:commandButton value="Cancel"
                                onclick="#{rich:component('editCompanyRegionPane')}.hide(); return false;" />
                            </h:form>
        </rich:popupPanel>

我希望在更新数据库中的值后在同一页面中显示一条消息。例如:当我点击更新按钮然后它将从Bean类调用方法,然后更新数据库中的值,关闭弹出面板后,它将在同一页面内显示一条消息(如:已成功更新)。

请帮助。

我使用了以下java代码:

public String updateUser(Long usrId, String firstName, String lastName,
        String loginName, String emailAddr) {
    AllCompanyDAO aDAO = new AllCompanyDAO();
    FacesContext.getCurrentInstance().addMessage("test", new javax.faces.application.FacesMessage("Success"));
    return aDAO.userUpdate(usrId, firstName, lastName, loginName, emailAddr);

}

并遵循jsf代码:

<div class="content container">
        <div style="padding-left:220px;">
             To see the relationships between users and regions <a href="#{appPath}/app/insertion/userRegionInfo.faces" >click here</a> <br/>
             <h:message for="test"></h:message>
        </div>
    </div>

2 个答案:

答案 0 :(得分:0)

companyRegionUpdate()结束时,添加:

  1. 消息

    FacesContext.getCurrentInstance().addMessage("test", new FacesMessage("Success"));

  2. 其中 test 是对<h:message> JSF 组件的绝对引用。

    1. <h:commandButton>,添加Ajax支持
    2. <h:commandButton value="Update"  >
      <a4j:support oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('editCompanyRegionPane')}.hide();}" action="#{CompanyAdminPageModel.companyRegionUpdate}"  event="onclick" reRender="test, table" />
      </h:commandButton>
      

      其中 test 是对<h:message> JSF 组件的绝对引用。

      您可以简单地使用具有ajax支持的<h:commandButton>组件,而不是向<a4j:commandButton >添加ajax支持。

答案 1 :(得分:0)

我使用以下代码解决了我的问题。 1.在java。中的companyRegionUpdate方法中使用以下代码。

 FacesContext.getCurrentInstance().addMessage("test", new javax.faces.application.FacesMessage("Successful")); 

然后在我想要的div中使用<h:messages /><h:messages /><h:message />不同。就我而言,<h:messages />有效。

就是这样。 : - )