1

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

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

因此我将以下字符串存储在表的列中

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

因此例如上面的字符串被写入${row.actionText}并被解析。但当然,JSTL 中的输出与上面完全相同,而无需解析${row.locationId}字符串中的变量。你也能以某种方式解决内部变量吗?

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

4

2 回答 2

2

.jsp包含 JSTL 的文件被编译成一个文件.java,然后该文件被编译成一个.class文件并在 JVM 中运行。

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

于 2013-01-05T01:51:22.310 回答
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());
  }      

谢谢

于 2013-01-06T00:39:47.470 回答