Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 访问struts2中的scriptlet变量<;s:if>;标签_Jsp_Struts2 - Fatal编程技术网

Jsp 访问struts2中的scriptlet变量<;s:if>;标签

Jsp 访问struts2中的scriptlet变量<;s:if>;标签,jsp,struts2,Jsp,Struts2,我在jsp中以以下方式在scriptlet中创建了变量 <% int count= 0; %> 基于某些条件,我正在增加变量值。。。。。。(立即思考“计数”值为5) 现在,如果“count”值为0,我必须使用struts2标记进行一些处理 我试过以下方法。但我失败了 <s:if test="#count == 0" > -------- -------- </s:if> <s:if test="%{#count == 0}"

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

<% int count= 0; %>

基于某些条件,我正在增加变量值。。。。。。(立即思考“计数”值为5

现在,如果“count”值为0,我必须使用struts2标记进行一些处理

我试过以下方法。但我失败了

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

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

--------
-------- 

提前感谢

不要使用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。不要使用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。

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

    以下内容必须位于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 set标记就是这样工作的(如果不是一个好主意,它仍然有点教育性)。

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

    以下内容必须位于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 set标记就是这样工作的(如果不是一个好主意,它仍然有点教育性)。

    为什么要用scriptlet来做呢?没有必要。在任何情况下,您都需要将scriptlet变量放入一个普通的JSP作用域(或值堆栈,但只需将其放入作用域就可以了)?没有必要。在任何情况下,您都需要将scriptlet变量放入一个普通的JSP作用域(或值堆栈,但更容易放入作用域)。虽然如果在迭代器中使用它,状态属性会更好…虽然如果在迭代器中使用它,状态属性会更好…谢谢。这是个糟糕的方式。但我的要求是这样的,谢谢。这是个糟糕的方式。但我的要求是这样的。