Richfaces验证后,验证不通过会有错误显示,当页面触发其他ajax请求时,如果想把验证错误信息清理掉,可以重写FacesStateManager来解决,关键代码:
package org.iata.isss.web.common.jsf.factory; import java.io.IOException; import java.util.Iterator; import javax.faces.application.StateManager; import javax.faces.component.EditableValueHolder; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; /** * * @author Xiao Jianbo * */ public class FacesStateManager extends StateManager { private final StateManager stateManager; public FacesStateManager(StateManager sm) { this.stateManager = sm; } @Override protected Object getComponentStateToSave(FacesContext ctx) { throw new UnsupportedOperationException(); } @Override protected Object getTreeStructureToSave(FacesContext ctx) { throw new UnsupportedOperationException(); } @Override protected void restoreComponentState(FacesContext ctx, UIViewRoot viewRoot, String str) { throw new UnsupportedOperationException(); } @Override protected UIViewRoot restoreTreeStructure(FacesContext ctx, String str1, String str2) { throw new UnsupportedOperationException(); } @Override public SerializedView saveSerializedView(FacesContext facesContext) { processEditableValueHolder(facesContext.getViewRoot()); return stateManager.saveSerializedView(facesContext); } private void processEditableValueHolder(UIComponent component) { if (component instanceof EditableValueHolder) { EditableValueHolder editableValueHolder = (EditableValueHolder) component; editableValueHolder.setValid(true); boolean localset = editableValueHolder.isLocalValueSet(); editableValueHolder.setValue(null);// super.setValue(value);setLocalValueSet(true); editableValueHolder.setLocalValueSet(localset); } else { Iterator<UIComponent> kids = component.getFacetsAndChildren(); while (kids.hasNext()) { UIComponent kid = kids.next(); processEditableValueHolder(kid); } } } @Override public void writeState(FacesContext ctx, SerializedView sv) throws IOException { stateManager.writeState(ctx, sv); } @Override public UIViewRoot restoreView(FacesContext ctx, String str1, String str2) { return stateManager.restoreView(ctx, str1, str2); } @Override public Object saveView(FacesContext facesContext) { return stateManager.saveView(facesContext); } @Override public void writeState(FacesContext ctx, Object sv) throws IOException { stateManager.writeState(ctx, sv); } @Override public boolean isSavingStateInClient(FacesContext ctx) { return stateManager.isSavingStateInClient(ctx); } }
相关推荐
【基于IIS层的IIRF实现URL重写 + 完美解决POSTBACK问题】 1.请在 Windows2003 操作系统环境下测试。 2.请确认您的IIS版本为 IIS6.0+ 。 3.请确认您已经将此项目的ASP.NET网站版本手动设置为 .NET 2.0. 4.请将Bin...
js重写Number,解决精度问题
人工智能实验,重写AO*算法解决数字重排问题
5. **源码**:提供的源码可能包含IIRF的配置示例、ASP.NET应用的示例代码,以及可能的数据库脚本,帮助开发者理解和实现URL重写以及POSTBACK问题的解决。 通过这个压缩包,开发者可以深入学习如何在IIS环境中配置和...
为了解决这个问题,开发者通常需要重写`RichTextBox`控件的功能,以扩展其字体支持。这涉及到深入理解`RichTextBox`的工作原理,包括文本渲染和字体映射。下面我们将详细介绍这个过程。 1. **字体映射**:默认情况...
可以重写TabControl以适应不同屏幕尺寸和设备类型,确保在各种环境下都能良好地显示。 7. **国际化和本地化**:如果你的应用需要支持多种语言,可以重写TabControl以方便地处理标签文本的翻译和布局调整。 在提供...
通过URL重写,你可以将复杂的、参数化的URL转换为简洁的、有意义的URL,比如将`/Product.aspx?id=123`重写为`/Product/123/Coffee-Maker`。 C#是ASP.NET的主要编程语言,用于编写服务器端代码。在URL重写中,C#代码...
例如,如果你有一个名为`Product.aspx`的页面,想要将其重写为`/product/{productId}`的格式,可以添加以下规则: ```xml ^product/(\d+)$" /> ``` 在这个例子中,`^product/(\d+)$`是正则...
标题中的“url重写工具”指的是用于转换或重新映射网站URL的一种技术,它能够将不友好的、复杂的URL转化为用户友好的、简洁的形式。在.NET环境中,这通常通过使用IIS(Internet Information Services)的扩展性来...
当输入数据不符合预设的验证规则时,`ValidError`属性可以用来设定显示给用户的错误信息。这不仅增强了错误反馈的可读性,也使得开发者能够根据具体的应用场景定制错误提示,提高了系统的可用性。 #### 实现细节与...
这就是“DropDownList重写”要解决的问题。 重写`DropDownList`控件通常涉及以下几个方面: 1. **继承与扩展**:首先,我们需要创建一个新的控件类,继承自ASP.NET的`System.Web.UI.WebControls.DropDownList`基类...
C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框C#重写MessageBox对话框
在微信小程序开发中,"重写App、重写Page与自定义分享"是常见的需求,它们涉及到小程序的基础架构和用户体验优化。以下将详细介绍这些概念及其应用。 **重写App** `App`是微信小程序的全局应用程序对象,它包含了...
"基于重写逻辑的并发实时程序验证的优化处理系统及其方法"这一主题,正是针对这个问题提供的一种解决方案。 重写逻辑是一种形式化的方法,用于描述和分析计算过程。它基于规则的推导系统,其中每个规则代表一个可能...
URL重写则是将实际的、可能复杂难懂的URL转换为更加简洁和易于理解的形式。这不仅有利于提升用户体验,也有助于SEO(搜索引擎优化),因为搜索引擎更倾向于抓取那些具有语义化URL的网站。 C# URL重写通常在ASP.NET...
5. **测试**:在自动化测试中,可能需要避免`alert`的弹出干扰测试流程,重写后可以控制是否显示。 需要注意的是,重写系统方法可能会对第三方库或未知代码产生影响,因此在实际项目中要谨慎使用。如果只是为了在...
"重写程序"的目的就是解决这些问题,通过更新狗内的固件或者模拟狗的功能,使得软件能够正确识别并激活。 压缩包中的文件包括: 1. RYDLL32.DLL:这是一个动态链接库文件,通常在Windows操作系统中用于提供某些特定...
为解决这个问题,WPF引入了验证规则(ValidationRules)。 验证规则是实现了`System.Windows.Controls.ValidationRule`接口的对象,它们在数据尝试更新到模型时执行验证逻辑。如果验证失败,WPF将显示相应的错误...
// 在这里添加你的自定义逻辑,如动画效果、额外的验证等 base.OnClick(e); // 调用基类的OnClick方法,确保事件正常触发 } ``` 3. **外观定制**:为了让按钮看起来更“漂亮”,我们可以修改其外观,包括颜色、...
URL重写的核心在于改变用户浏览器地址栏显示的URL,而不实际更改服务器上的资源位置。这种技术主要通过两种方式实现:IIS服务器层面的URL重写和应用程序层面的URL重写。 1. **IIS URL重写模块**:IIS(Internet ...