我有一个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>
答案 0 :(得分:0)
你应该在对话框中形成如下代码
<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>
答案 1 :(得分:0)
您的对话框可能与打开它的按钮的格式相同。并且打开按钮不必要地提交表单(如果除了打开对话框之外没有做任何事情,则不必要地提交)。
修复打开按钮和对话框的单独表单。对话框表单通常在对话框中。将type="button"
添加到打开对话框的p:commandButton
,以便它不会发出不必要的POST请求。
答案 2 :(得分:0)
昨天,我为你写了一个小例子。我们不知道你的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代码有一个用于绑定textarea字段的对象和一个在按下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代码。