2014-04-08 81 views
0

我有以下的在我的项目的JSP页面的代码,Struts标签不会允许脚本在标签的属性

<%@taglib uri="/struts-tags" prefix="s" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<div id="div1"></div> 
<div id="div2"></div> 
<% String var="hello"; %>   
<c:set var="test1" value="<%= var %>"/> 
<s:set var="test2" value=" <%=var%>" /> 
<script> 
document.getElementById("div1").innerHTML="${test1}"; //hello 
document.getElementById("div2").innerHTML="${test2}"; //nothing is displayed. 
</script> 

我的疑问是既<c:set..>标签和<s:set..>标签由同一执行容器, 但为什么第一个产生的结果是“你好”,后来没有给出任何结果。

回答

0

每一件事情你都没有给第二种情况下的标签。

您的代码

<s:set var="test2" value=" <%=var%>" /> 

将其更改为

<c:set var="test2" value=" <%=var%>" /> 

基本上,我们使用以下语法尝试这种

<s:property value="test2"/> 
+1

我已经给出了正确的标签标签,它是一个Struts 2标签。 – reddy

+0

我可以知道你为什么要混合使用吗?为什么你不能在第二种情况下使用JSTL标签? – mahesh

+0

我可以在那里使用JSTL标签,但是我的疑问是我们在标签中使用了表达式语言。 – reddy

0

不能嵌套小脚本,也没有其他显示支柱变量Struts标签内部的Struts标签。

但是你可以打开的标签,并把它放在中间:

<s:set var="test2" > 
    <%=var%> 
</s:set> 
+0

为什么我们无法将scriptlet嵌套在struts标签中,而我们可以将scriptlet嵌套在JSTL标签中。原因是什么。 – reddy