【问题标题】:How to pass JSP variable value to this Struts tag如何将 JSP 变量值传递给这个 Struts 标记
【发布时间】:2013-02-04 10:49:28
【问题描述】:

我想将JSP变量值设置为struts标签<s:set var="" value="">, 在下面的代码中,我必须在<s:set name="c" value=" "/> 中设置carbo 变量的值,而不是常量值。

我该怎么做?

<%! String carbo=""; %>

<%
String dish_name=(String)session.getAttribute("d");
String calories_qty=(String)session.getAttribute("a");

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();  
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/medical","root","root");  
    //Connection conn=dbConn.getConnection();
    Statement stmt = conn.createStatement();  
    System.out.println("jsp dish_name="+dish_name);
    System.out.println("jsp dish_name="+calories_qty);
    ResultSet rs = stmt.executeQuery("Select * from calories c,dishdetail d where  c.dishdetail_Id=d.id and d.dishName='"+dish_name+"' AND d.size='"+calories_qty+"' "); 

    while(rs.next()){
        carbo=rs.getString("carbo");
        //carbo=Float.parseFloat(rs.getString("carbo"));
    } 
    System.out.println("jsp carbo:"+carbo);
}
catch(Exception e){
    System.out.println("error:"+e);
}

%>

<s:set name="c" value="45" />

<p> carbo: <s:property  value="#c" /></p>

<sj:progressbar  cssStyle="width:20%; height:10px;" value="%{c}"  onCompleteTopics="reloadfifthlist" onChangeTopics="mychangetopic"/> 

【问题讨论】:

    标签: java jsp struts2 struts struts2-jquery


    【解决方案1】:

    我希望我能很好地理解你想要达到的目标,但我会同意

    <s:set name="c" value="<%= carbo %>"/>
    

    【讨论】:

    • 感谢回复。我的问题已经解决了。我确实做了一个会话并将碳水化合物值放入该会话对象中。并使用 value="%{#session.car} 检索进度条属性的值。现在代码工作正常。
    【解决方案2】:

    最简单的方法

    <s:set var="c"><%=carbo%></s:set>
    <s:property value="#c" />
    

    但是,与其在小脚本中编写应用程序逻辑,不如在动作中进行,您可以将这些变量直接放在动作类中。该动作可以将调度结果返回给 JSP。然后在为属性创建 getter 和 setter 之后,您可以使用 OGNL 表达式来引用操作属性。例如

    @Action(value="name", results={
    @Result(location = "/path/to/page.jsp")
    })
    class MyAction extends ActionSupport {
    private String carbo;
    //getters  and setters here
    
    public String execute(){
      //your logic here
    
      return SUCCESS;
    }
    
    } 
    

    那么你只需要引用这个动作属性

    <s:property value="%{carbo}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2010-09-09
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多