java-没有setter getter的struts 2动作

我想为来自用户界面的数据的属性创建一个没有setter和getter的动作类.相反,我想在自己的构建器类中使用ServletActionContext.getRequest().getParameterMap()来构造对象.

我创建了没有属性的Action类.提交表单时,我遇到ognl.OgnlException:setProperty(null,“ field-name”,[Ljava.lang.String; @ 5513fab7)的target为null

是否需要其他任何约定或配置来传达Struts2框架以不设置属性并停止避免我在上面收到的异常?

解决方法:

通过将参数excludeParams设置为拦截器,可以从params拦截器的可接受参数中排除某些属性.默认情况下,此参数使用

<interceptor-ref name="params">
  <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>

您应该在此处添加属性,它接受正则表达式模式以匹配属性名称.可以通过ParameterNameAware实现的操作来破坏采用可接受的参数名称的策略,在该操作中您可以删除上面给出的限制.

为了更具体地说明“来自用户界面的数据”,我坚持将拦截器ref元素的参数在启动时应用于拦截器,并且不会存储在配置管理器中的其他位置.这意味着您无法在运行时获取此参数,只能通过更新和重新加载配置文件struts.xml进行更改.如果您将配置保存在安全的地方并且可以进行修改,那么可以对运行中的应用程序安全性提出更多要求.

上一篇:Android自定义Toast


下一篇:手机号正则判断是否合法