如何在struts2中配置自定义转换错误拦截器

发布于 2024-10-16 18:04:45 字数 918 浏览 2 评论 0原文

我需要覆盖默认的转换消息 所以,我试图为我的应用程序创建一个自定义转换错误拦截器,它将被调用,而不是 struts 默认拦截器 下面提到的是代码,

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>

但这不起作用。 提前致谢

I need to override the default conversion messages
So, I m trying to make a custom conversion error interceptor for my application which would be called instead of struts default interceptor
Below mentioned is the code for that

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;
}}

Here is the struts.xml configuration mentioned.

<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>

But it doesn't work.
Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海拔太高太耀眼 2024-10-23 18:04:45

我看到了一些可能性。

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

我的博客中有一个关于自定义拦截器的教程,可能有用: http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

I see a few possibilities.

  1. The struts2 conversionError interceptor is still going to be called. If you want yours instead of the standard one, you need to define the entire stack yourself, with your interceptor in place of the standard one.
  2. You might want to change the configured name of the custom interceptor so that it is not the same as the standard one. Otherwise, interceptor-ref name="conversionError" may still be pointing to the standard interceptor.
  3. You need to make sure that your new stack is used. You can do that either by declaring it as the default stack, or by referencing the custom stack inside a specific action.

I have a tutorial on custom interceptors in my blog that may be useful: http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文