我有一个类Message.java
,其中有两个相同类型Location.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" />
最佳答案
这只是错误的 OGNL 表达式
%{%{variableName}.address}
如果您想重用 JSP 作为模板,那么您应该使用有效的 OGNL 表达式。然而,传递参数名称是巨大的,因为您将有复杂的 OGNL 来返回该参数名称的值。
你还应该知道
Parameters are passed as request parameters, so use the
${param.ParamName}
notation to access them. Do not use theproperty
tag to access parameters in included files.
关于java - Struts 2.s :property. 如何获取名称作为参数传递给jsp的变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140862/