我使用以下代码来编辑记录的值。代码运行正常。
<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>
在companyRegionUpdate()
末尾添加:
-
消息
FacesContext.getCurrentInstance().addMessage("test", new FacesMessage("Success"));
其中test是对<h:message>
JSF组件的绝对引用。
- 为
<h:commandButton>
添加Ajax支持
如
<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支持的<a4j:commandButton >
组件,而不是为<h:commandButton>
添加ajax支持。
我使用以下代码解决了我的问题。1. 在java中的companyRegionUpdate方法中使用了以下代码:
FacesContext.getCurrentInstance().addMessage("test", new javax.faces.application.FacesMessage("Successful"));
然后在我想要的div中使用<h:messages />
。<h:messages />
不同于<h:message />
。在我的例子中,<h:messages />
是有效的。
就是这样。: -)