首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支柱2. s:属性。如何获得其名称作为参数传递给jsp的变量的值?

支柱2. s:属性。如何获得其名称作为参数传递给jsp的变量的值?
EN

Stack Overflow用户
提问于 2017-03-31 12:36:21
回答 1查看 2.3K关注 0票数 1

我有一个Message.java类,它有两个相同类型的变量:origindestination

Message.java

代码语言:javascript
复制
public class Message{

    private Location origin;
    private Location destination;

//Getters and setters correctly defined   
}

Location.java

代码语言:javascript
复制
public class Location{

private String address;    
}

MessageAction.java

代码语言:javascript
复制
 public class MessageAction {

        private Message message;
       //Getters and setters correctly defined   
    }

我想重用代码,所以我创建了一个通用的JSP,并通过参数传递这些变量的名称。(当然,代码更复杂,这只是一个基本的例子,因此它确实帮助我重用代码)

message.jsp

代码语言:javascript
复制
<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

代码语言:javascript
复制
<s:set name="variableName">${param.variableName}</s:set>
<s:property value="%{%{variableName}.address}" />

如果我直接写入变量的名称,我将正确地接收它们的值,因此操作将正确地设置它们。

代码语言:javascript
复制
<s:property value="origin.address" />
<s:property value="destination.address" />
EN

回答 1

Stack Overflow用户

发布于 2017-03-31 19:48:21

这是错误的OGNL表达式

代码语言:javascript
复制
%{%{variableName}.address}

如果您想重用JSP作为templete,那么应该使用有效的OGNL表达式。然而,传递参数名是巨大的,因为您将有复杂的OGNL来返回这个参数名的值。

你也应该知道

参数作为请求参数传递,因此使用${param.ParamName}符号访问它们。不要使用property标记访问包含的文件中的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43140862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档