解析字符串中的变量 - JSTL?

时间:2013-01-05 01:19:40

标签: java jsp jstl el

我一直试图弄清楚我正在尝试使用JSTL是否可行。我将以下内容存储在数据库表

<c:when test="${row.actionType == 'com'}">  
  ${row.actionText}  
</c:when>       

因此我将以下String存储在表

的列中
<assign name="LocationID" expr="'${row.locationId}'"/> 
<submit next="/aotg/dynApp" namelist="UserID AppID LocationID"/> 

因此上面的字符串例如被写入${row.actionText}并得到解决。但是当然JSTL中的输出完全如上所述而没有解决 String中的变量${row.locationId}。你也能以某种方式解决内部变量吗?

这样的事情是否可能,或者我是否需要对JSTL页面中可能使用的任何参数进行硬编码,而不是尝试从中动态读取它 桌子?

2 个答案:

答案 0 :(得分:2)

包含JSTL的.jsp文件被编译为.java文件,然后将其编译为.class文件并在JVM中运行。

由于c:when块在编译时不在JSP中,因此在类文件运行时它只会变成一些输出文本。

答案 1 :(得分:0)

现在我只是使用地图来解决这个问题。当我有更多时间时,我会 看看有没有更优雅的方法来做到这一点。

  Map<String, String> varMap = new HashMap<String, String>();
  varMap.put("#locationId#", locationId.toString());    
  varMap.put("#mainMenu#", mainMenu);   
  varMap.put("#userId#", userId.toString());
  varMap.put("#appId#", appId.toString());    

  command = string;

  for (Map.Entry<String, String> entry : varMap.entrySet()) {

      command = command.replace(entry.getKey(), entry.getValue());
  }      

由于