2012-07-11 51 views
0

我正在为我的应用程序使用struts2。Struts 2 ApplicationResources.properties错误

<s:submit cssClass="button" key="btn.search" tabindex="12" /> 
在ApplicationResources.properties

文件我有

btn.search = Go 

和我得到的错误,而提交页面,

OgnlValueStac W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn 
    Error setting expression 'btn.search' with value '[Ljava.lang.String;@14f414f4' 
    ognl.OgnlException: target is null for setProperty(null, "search", [Ljava.lang.String;@14f414f4) 

什么问题?

回答

0

key属性是:

<s:set name="buttonText"><s:text name="btn.search"/></s:set> 
<s:submit cssClass="button" value="%{#buttonText}" tabindex="12"/> 

或者,正如大卫在他的回答所指出的那样,如果你的动作类扩展ActionSupport这应该工作以及速记均为namevalue属性。

使用key表示您正在使用名为btn.search的属性。

虽然你可以设置值到一个文本属性查找的结果,也可以直接使用它:

<s:submit value="%{getText('btn.search')}" /> 
+0

作为一个说明,这将需要该操作是一个'TextProvider',比如通过扩展'ActionSupport'。 ''标签不需要TextProvider来访问'struts.custom.i18n.resources'。 – rees 2012-07-11 20:49:25

+0

@rees是的。虽然这是非常罕见的行动*不*延伸。 – 2012-07-11 21:08:18

+0

是的,但我需要的代表点,所以我试图在你的答案射击洞。你也遗漏了提问者的'cssClass =“按钮''和'tabindex =”12“',而我的解决方案是复制粘贴就绪,即使提交者出于任何原因不会扩展'ActionSupport' 。 :D – rees 2012-07-11 21:55:55

0

key正在提交作为参数,OGNL试图通过调用getBtn().setSearch("");获得命名从ValueStackbtn设置参数的对象,但是,因为你必须在堆栈中没有BTN对象,空目标的例外是发生。

这应该工作:

<s:submit cssClass="button" value="%{getText('btn.search')}" tabindex="12"/>