【问题标题】:Turning off OGNL warnings in Struts 2在 Struts 2 中关闭 OGNL 警告
【发布时间】:2014-08-29 14:28:23
【问题描述】:

我正在尝试关闭以下警告消息

OgnlValueStac W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn Error setting expression 'checkboxidentifyer' with value '[Ljava.lang.String;@518b518b'

我已尝试将以下内容放入我的 log4j.xml 文件中

<logger name="log4j.logger.org.apache.struts2" >
    <level value="ERROR" />
    <appender-ref ref="console" />
</logger>
<logger name="log4j.logger.com.opensymphony" >
  <level value="ERROR" />
  <appender-ref ref="console" />
</logger>
<logger name="ognl.OgnlException" >
  <level value="ERROR" />
     <appender-ref ref="console" />
</logger>
<logger name="com.opensymphony.xwork2.util.logging.commons.CommonsLogger" >
  <level value="ERROR" />
  <appender-ref ref="console" />
</logger>
<logger name="ognl.OgnlRuntime" >
  <level value="ERROR" />
  <appender-ref ref="console" />
</logger>

我也试过添加

<constant name="struts.devMode" value="false" />

到我的struts.xml 文件。我还尝试将以下内容添加到struts.xml 文件的interceptor-stack 部分

<interceptor-ref name="defaultStack">
    <param name="excludeParams">.*?checkbox.*</param>
</interceptor-ref>

我的问题是:

  1. 我有没有做错配置?
  2. 如何禁用警告。

【问题讨论】:

    标签: java xml struts2 warnings ognl


    【解决方案1】:

    excludeParamsparams interceptor 的属性,应该像这样引用

    <interceptor-ref name="defaultStack">
        <param name="params.excludeParams">.*?checkbox.*</param>
    </interceptor-ref>
    

    注意,如果您在操作上使用interceptor-ref 标记,那么它会覆盖默认拦截器堆栈并且仅适用于此操作配置。对于常见用法,请考虑创建自定义拦截器堆栈并将其设为任何操作配置的默认值。

    您可以为拦截器和 OGNL 设置日志记录级别。使用log4j.properties

    log4j.logger.com.opensymphony.xwork2.interceptor=ERROR
    log4j.logger.com.opensymphony.xwork2.ognl=ERROR
    

    【讨论】:

    • 我尝试更改参数名称,还尝试添加新的 log4j.properties(我们没有其中之一,因为我们使用的是 xml 配置),但我仍然得到警告信息。是的,我们已经结束了默认拦截器堆栈。
    • 请注意我也尝试将这些标识符添加到 log4j.xml 文件中,添加 到它,使用与我在上面的问题中使用的相同的记录器标记主体。
    • 另加&lt;level value="ERROR"&gt;
    • 我确实在文件中有这个,两个条目都遵循这个公式
    • 播放你的关于 excludeParams 位置的分析器,我把它从 部分移到 这就是最终解决问题的方法。
    【解决方案2】:

    我最终解决了这个错误,而我有(如在 defaultStack 拦截器引用中的参数上面的问题中所见,当我将参数移动到拦截器引用名称参数时,它删除了错误

    <interceptor-stack name="new_default_stack">
      <interceptor-ref name="params">
      <param name="paramNameMaxLength">250</param>
      <param name="excludeParams">.*?checkbox.*</param>
      </interceptor-ref>
      <interceptor-ref name="timeActions"/>
      <interceptor-ref name="defaultStack">
    
      </interceptor-ref>
      <interceptor-ref name="userProfile"/>
      <interceptor-ref name="valueStackManipulator"/>
      <interceptor-ref name="actionHistoryRecorder"/>
      <interceptor-ref name="cachingHeadersInterceptor"/>
    </interceptor-stack>
    

    这是需要更改的 excludeParams 的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2014-07-27
      • 2015-12-01
      • 2011-06-29
      • 2011-07-10
      • 2013-02-15
      • 2013-06-21
      相关资源
      最近更新 更多