java - Struts 2.s :property. 如何获取名称作为参数传递给jsp的变量的值?

标签 java jsp struts2 tags

我有一个类Message.java,其中有两个相同类型Location.java的变量,分别称为origindestination

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 the property tag to access parameters in included files.

关于java - Struts 2.s :property. 如何获取名称作为参数传递给jsp的变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140862/

相关文章:

javascript - 删除选定的行 - Struts2

java - 如何使用数据库为所有现有表创建实体类?

java - Powermockito 模拟静态方法匹配器不起作用

java - 如何在 JSP 页面中使用 session 来获取信息?

java - 如何显示 jsp 来响应对 servlet 的 ajax 调用

javascript - 覆盖 jqGrid 中的默认导航按钮功能

java - eclipse : Can not find the tag library descriptor for "/struts-tags"

java - 尽可能大地扩展 JPanel

java - 'messy'字符串到int转换java

asp.net - 我怎样才能为单个 HTML 页面添加一点点活力,同时具有最小的依赖性和最大的可移植性?