有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

消息。java

public class Message{

    private Location origin;
    private Location destination;

//Getters and setters correctly defined   
}

位置。java

public class Location{

private String address;    
}

消息操作。java

 public class MessageAction {

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

我希望重用代码,因此我创建了一个公共JSP,并通过参数传递这些变量的名称。(当然,代码更复杂,这只是一个基本示例,因此它确实有助于我重用代码)

消息。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的值。我试过几种组合,在谷歌上搜索了一会儿,但什么也没找到

位置。jsp

<s:set name="variableName">${param.variableName}</s:set>
<s:property value="%{%{variableName}.address}" />

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

<s:property value="origin.address" />
<s:property value="destination.address" />

共 (1) 个答案

  1. # 1 楼答案

    这是错误的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.