我有一个Message.java类,它有两个相同类型的变量:origin和destination。
Message.java
public class Message{
private Location origin;
private Location destination;
//Getters and setters correctly defined
}Location.java
public class Location{
private String address;
}MessageAction.java
public class MessageAction {
private Message message;
//Getters and setters correctly defined
}我想重用代码,所以我创建了一个通用的JSP,并通过参数传递这些变量的名称。(当然,代码更复杂,这只是一个基本的例子,因此它确实帮助我重用代码)
message.jsp
<s:push value="message">
<s:include value="/jsp/location.jsp">
<s:param name="variableName" value="'origin'" />
</s:include>
<s:include value="/jsp/location.jsp">
<s:param name="variableName" value="'destination'" />
</s:include>
</push>问题来了,我不知道如何展示%{variableName}.address的价值。我尝试了几个组合,并搜索了一段时间,但我没有找到任何东西。
location.jsp
<s:set name="variableName">${param.variableName}</s:set>
<s:property value="%{%{variableName}.address}" />如果我直接写入变量的名称,我将正确地接收它们的值,因此操作将正确地设置它们。
<s:property value="origin.address" />
<s:property value="destination.address" />发布于 2017-03-31 19:48:21
这是错误的OGNL表达式
%{%{variableName}.address}如果您想重用JSP作为templete,那么应该使用有效的OGNL表达式。然而,传递参数名是巨大的,因为您将有复杂的OGNL来返回这个参数名的值。
你也应该知道
参数作为请求参数传递,因此使用
${param.ParamName}符号访问它们。不要使用property标记访问包含的文件中的参数。
https://stackoverflow.com/questions/43140862
复制相似问题