最小示例对话框:
<p:dialog header="Test Dialog"
widgetVar="testDialog">
<h:form>
<p:inputText value="#{mbean.someValue}"/>
<p:commandButton value="Save"
onsuccess="testDialog.hide()"
actionListener="#{mbean.saveMethod}"/>
</h:form>
</p:dialog>
我想要做的是让mbean.saveMethod以某种方式阻止对话框在出现问题时关闭,并且仅通过咆哮声输出消息。在这种情况下,验证程序无济于事,因为在将保存提交到后端服务器之前,无法确定someValue是否有效。当前,我使用visible属性进行此操作,并将其指向mbean中的布尔值字段。那行得通,但是它却使用户界面变慢,因为弹出或弹出对话框需要点击服务器。
在onsuccess
运行,如果AJAX请求本身是成功的(即有没有网络故障,未捕获的异常等),如果不采取行动方法成功地调用。
给定一个<p:dialogwidgetVar="testDialog">
,您可以删除onsuccess
并将其替换为RequestContext#execute()
内部的PrimeFacessaveMethod()
:
if (success) {
RequestContext.getCurrentInstance().execute("PF('testDialog').hide()");
}
注意:PF()
在PrimeFaces 4.0中引入。在较旧的PrimeFaces版本中,您需要testDialog.hide()
使用。
如果您不想使用特定于视图的脚本使控制器混乱,则可以改用oncomplete
提供args
具有布尔validationFailed
属性的对象:
<p:commandButton ...
oncomplete="if (args && !args.validationFailed) PF('testDialog').hide()" />
该if(args)
检查是必要的,因为发生ajax错误时可能不存在该检查,因此在尝试获取validationFailed
该错误时会导致新的JS错误。出于此答案中所述的原因,&
而不是必选,如果需要,可以重构为调用的JS函数,如验证失败时保持<p:dialog>
打开中所示。&
如果然而,没有验证错误和操作方法被成功触发,而你仍想保留,比如,因为异常的服务方法调用的对话框打开,这时你可以手动触发validationFailed
以true
通过明确从内支持bean的操作方法调用FacesContext#validationFailed()
。例如
FacesContext.getCurrentInstance().validationFailed();
问题内容: 我有一个表格,如果单击“提交”,则需要显示验证错误消息。 这是一个工作的家伙 用户开始进行更改时,验证工作正常。但是它不会显示任何错误消息。如果单击“提交”而不输入任何内容。 有实现这个的想法吗?或者以其他方式如何在单击“提交”按钮时使每个输入字段$ dirty 问题答案: 我在http://jsfiddle.net/thomporter/ANxmv/2/上找到了这个小提琴,它巧妙地进
问题内容: 请原谅我; 我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整日都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。 这是我的struts.xml的片段: 如您所见,如果验证成功,我有一个动作要提交给results.jsp。否则,我希望它再次显示我的index.jsp。据我所知,这些页面可以正确导航
问题内容: 使用hibernate和mysql 5.5,我试图将字符串值保留在数据库表的TEXT类型列中。 厌倦了在提到的列中设置String值并试图持久化数据。但是我遇到了以下异常。我已经使用Netbeans 8.0生成了Entity类。 例外:- 创建SQL: 实体类 我还尝试通过删除来保留数据,它将数据保存为“ org.hibernate.engine.jdbc.BlobProxy@11e8
本文向大家介绍Java后台开发之表单提交之前验证,包括了Java后台开发之表单提交之前验证的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,具体代码如下所示: 以上所述是小编给大家介绍的Java后台开发之表单提交之前验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
V9的验证码在生成后,会把验证码的数字存入Session当中。 V9在默认的情况下,Session是存放在数据库当中的。其在数据库中的表现如下: 您可以在访问后台登陆页后,查看一下数据库中Session这个表,如果表中没有类型的数据code|s:4:"***"; 那说明Session没有成功的写入到数据库中。 这会使你的登陆失败。 可以偿试通过修改"/caches/configs/s