2012-07-20 99 views
0

我刚刚发现了一些有趣的东西,我无法解释它。有人可以解释它。奇怪的s:网址行为

我在我的JSP文件

<s:url var="test" action="Home.action" escapeAmp="false"> 
    <s:param name="departYear" value="2006"/> 
    <s:param name="homeTown" value="lanzhou"/> 
</s:url> 
<p><s:property value="test"/></p> 

定义网址,结果是/path/to/action/Home.action?departYear=2006,如果我改变的第二个参数<s:param name="homeTown" value="123456"/>,那么它正确显示我/path/to/action/Home.action?departYear=2006&homeTown=123456我没有带试图打印url并且它可以在更多参数下正常工作。它根本不会引发任何问题。我只是好奇,为什么它不适用于s:property

顺便说一句,我也改变了2个参数的顺序,它也没有在url中显示参数。

在此先感谢。

回答

0

参考the documentation ......它说value是一个对象,而不是一个字符串。

<s:param name="homeTown" value="lanzhou"/>会调用您的动作类的getLanzhou()方法来尝试并填充值。

你想要的是<s:param name="homeTown" value="%{'lanzhou'}"/>

<s:param name="departYear" value="2006"/>作品,因为非字符串属性类型不被解析,而是直接当做表达式。

+0

@mmc谢谢。这应该是原因。好学。 – Jaiwo99 2012-07-20 12:49:25