通过struts属性标记在JSP页面上打印多个值

时间:2014-12-02 13:49:06

标签: java jsp struts2

我试图通过s:property标签将从动作类中的数据库接收的各种值打印到JSP页面。但它只显示一个值。

行动类:

            ResultSet r = st.executeQuery("select unique(emailid) from pagequery");

            while (r.next()) {
                uniquemail=r.getString(1);
}

JSP PAGE: JSP页面应显示所有唯一的电子邮件ID。但它只显示第一个。

<td>
<s:property value="uniquemail"/>
</td>

2 个答案:

答案 0 :(得分:0)

如果uniquemail是一个数组,你必须像这样迭代它

<s:iterator value="uniquemail">
    <s:property/>
</s:iterator>

答案 1 :(得分:0)

下面

while (r.next()) { 
    uniquemail=r.getString(1); 

您在每次迭代时使用新值覆盖单个变量。您需要使用List或数组,并向其添加新元素,否则您将始终只存储最后一个迭代值。

public class YourAction exteds ActionSupport{

    private List<String> mails = new ArrayList<String>();
    /* put Getter and Setter for mails here */

    public String execute(){

        /* ... other stuff here ... */    

        ResultSet r = st.executeQuery("select unique(emailid) from pagequery");
        while (r.next()) {
            mails.add(r.getString(1));
        }
        return SUCCESS;
    }
}

然后在JSP中使用迭代器来渲染您的集合。

Mails: 
<ul>
  <s:iterator value="mails">
    <li><s:property/></li>
  </s:iterator>
</ul>