2011-02-11 49 views
0

我需要覆盖默认转换消息 因此,我试图为我的应用程序做一个自定义转换错误拦截器,而不是struts默认拦截器 下面提供的是那如何在struts2中配置自定义转换错误拦截器

public class MyConversionErrorInterceptor extends ConversionErrorInterceptor { 

private static final long serialVersionUID = 1L; 

protected Object getOverrideExpr(ActionInvocation invocation, Object value) { 
    ValueStack stack = invocation.getStack(); 
    return (String)stack.findValue("myproj.item"); 
} 
protected boolean shouldAddError(String propertyName, Object value) { 

    return true; 
}} 

这里是提到的struts.xml配置。

<interceptors > 

<interceptor name="conversionError" class="com.celtic.cmvs.webapp.interceptor.MyConversionErrorInterceptor" /> 

<interceptor-stack name="myDefaultStack"> 
    <interceptor-ref name="conversionError" /> 
    <interceptor-ref name="defaultStack"/> 
</interceptor-stack> 

但它不工作。 在此先感谢

回答

2

我看到一些可能性。

  1. struts2 conversionError拦截器仍然会被调用。如果你想要你的而不是标准的,你需要自己定义整个堆栈,用你的拦截器代替标准的。
  2. 您可能需要更改自定义拦截器的配置名称,以使其与标准拦截器不同。否则,interceptor-ref name =“conversionError”可能仍然指向标准拦截器。
  3. 您需要确保使用新堆栈。您可以通过将其声明为默认堆栈或通过在特定操作中引用自定义堆栈来实现。

我在我的博客自定义的拦截,可能是有用的教程:http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

+0

感谢那些帮助了很多:) – Vipin 2011-02-14 07:46:36