我有一个primefaces对话框,里面有一个输入文本区。文本区是必填字段。当按钮被点击时,我得到了咆哮信息。但是,即使当对话框第一次打开时,我仍然收到咆哮消息。我哪里错了?
<p:dialog id="dumpNotesDialog" >
<p:growl autoUpdate="true" showDetail="true" id="message" />
<p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" value="#{postProcessedDump.keyedinContent}" />
<p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" />
</p:dialog>发布于 2015-06-16 21:04:44
你应该像下面的代码一样在对话框中显示表单
<h:body>
<h:form id="formId">
<p:commandButton value="test" onclick="PF('dlg').show()" />
</h:form>
<p:dialog id="dumpNotesDialog" widgetVar="dlg" appendTo="@(body)">
<h:form>
<p:growl autoUpdate="true" showDetail="true" id="message" />
<p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" />
<p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" />
</h:form>
</p:dialog>
</h:body>发布于 2015-06-16 21:06:07
您的对话框可能与打开它的按钮位于相同的窗体中。并且打开按钮不必要地提交表单(如果它除了打开对话框之外什么也不做的话,就不必要了)。
若要修复此问题,请为打开按钮和对话框创建单独的窗体。对话框窗体通常位于对话框内部。将type="button"添加到打开对话框的p:commandButton中,这样它就不会发出不必要的POST请求。
发布于 2015-06-17 14:29:58
昨天,我给你写了一个小例子。我们不知道你的ManagedBean代码,因此我想这个例子是一个简单的Java代码。视图只有一个显示对话框的按钮,里面有一个输入文本区和一个名为Save的按钮,用于调用ManagedBean的方法。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test Primefaces</title>
</h:head>
<h:body>
<h:form>
<p:commandButton value="Open" type="button" onclick="PF('dlg1').show();" />
<p:dialog id="dumpNotesDialog" widgetVar="dlg1">
<p:growl autoUpdate="true" showDetail="true" id="message" />
<p:inputTextarea required="true" requiredMessage="Enter notes to save" id="dumpnotes" value="#{dumpController.message}" />
<p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="message" />
</p:dialog>
</h:form>
</h:body>
</html>ManagedBean代码有一个用于绑定文本区域字段的对象和一个在按下Save按钮时调用的方法。
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
@ManagedBean
public class DumpController {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void saveDumpNotesContent(ActionEvent actionEvent) {
/*TODO Your opearations here!*/
final FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Your message: " + message) );
}
}如果您想要一个更好的答案,请包括您的Java代码。
https://stackoverflow.com/questions/30860012
复制相似问题