1

假设我有两个请求属性:

  1. “fieldnames”是字段名称的列表。示例:["fielda", "fieldb"]
  2. “field.fielda”,其中包含一段 html。示例:输入字段或类似的东西

在我的 JSP 页面中,我有如下内容:

<c:forEach var="field" value="${fieldnames}">
  <c:set var="tmp" value="field.${field}"/>
  ${request.getAttribute(tmp)}
</c:forEach>

现在的问题是,我可以通过列表看到字段的名称。我可以在临时变量中生成“正确”字段名称。但我不知道如何从请求属性映射中获取引用属性的值。这可以做到吗?我也尝试过使用 request[variable] 表示法,但无济于事。

4

1 回答 1

0

假设你有一个像这样的bean:

public class MyBean {
   private String fielda;
   private String fieldb;

   public String getFielda() {
      return fielda;
   }
   public void setFielda(String fielda) {
      this.fielda = fielda;
   }
   public String getFieldb() {
      return fieldb;
   }
   public void setFieldb(String fieldb) {
      this.fieldb = fieldb;
   }
}

在某处使用代码:

MyBean field = new MyBean();
field.setFielda("Message from A");
field.setFieldb("Message from B");
request.setAttribute("field", field);

request.setAttribute("fieldnames", new String[] { 
   "fielda", "fieldb" 
});

那么这样的事情应该可以工作:

<c:forEach var="fn" items="${fieldnames}">
   ${requestScope.field[fn]}
</c:forEach> 

如果失败,或者您的代码比这更复杂,您可以在 自定义标签自定义函数中提取逻辑来执行EL 评估。如果这对于这种情况来说开销太大,那么也许您可以重新考虑您的代码并找到另一种方法来获得相同的结果。

于 2012-04-29T13:44:07.227 回答