访问struts2中的scriptlet变量<s:if>标记</s:if>

时间:2012-04-11 11:22:49

标签: jsp struts2

我在jsp中以如下方式在scriptlet中创建了变量

<% int count= 0; %>

基于某些条件我正在递增变量值......(现在认为'count'值为5

现在,如果使用struts2标记'count' 0 ,我必须做一些处理

我尝试了以下方法。但我失败了................

<s:if test="#count == 0" > 
   --------
   -------- 
</s:if>  

<s:if test="%{#count == 0}" >  
</s:if>  

提前致谢

2 个答案:

答案 0 :(得分:1)

不要使用scriptlet

<s:bean name="org.apache.struts2.util.Counter" var="counter">
   <s:param name="first" value="0"/>
   <s:param name="last" value="5" />
</s:bean>

<s:iterator value="#counter">
  <li><s:property /></li>
</s:iterator>

它将打印0到5。

答案 1 :(得分:0)

每个人都告诉过你这不是个好主意......如果你想要一个坏主意那么:

以下必须位于JSP的顶部:

<%@ page import="com.opensymphony.xwork2.ActionContext" %>
<%@ page import="com.opensymphony.xwork2.util.ValueStack" %>

在JSP中的某个地方之后:

<%
    int i = 0;
    ValueStack stack = ActionContext.getContext().getValueStack();
    stack.getContext().put("varName", i);
    stack.setValue("#attr['varName']", i, false);
%>

那么这应该有效:

<s:property value="#varName"/> <!-- prints 0 -->

我没有花时间测试这个,但这就是struts2设置标签如何完成它的工作(如果不是一个好主意,它仍然有点教育)。