【问题标题】:Print multiple values on a JSP page by struts property tag通过struts属性标签在JSP页面上打印多个值
【发布时间】:2014-12-02 23:00:01
【问题描述】:

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

动作类:

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

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

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

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

【问题讨论】:

  • while (r.next()) { uniquemail=r.getString(1); 这对你来说似乎是正确的方法吗?您将在每次迭代中使用新值覆盖一个简单变量。使用 List 或数组,并向其中添加新元素,否则您将始终只存储最后一个迭代值。然后在 JSP 中使用迭代器来呈现您的集合。
  • 还是个业余爱好者。我可以像 Array(Java.sql.Array)uniquemail=r.getString(1); 一样使用它吗? ?我在上面创建了 getter 和 setter。
  • 使用List&lt;String&gt;,或String[]。它充满了关于如何从那里开始的好例子,我建议你在接触新东西之前总是至少浪费几分钟,以检查是否有例子或最佳实践或通用方法来做这件事。这将节省您的时间、您的头痛,并可能节省您的工作:)
  • 如果你能给我完整的代码作为答案会很棒。

标签: java jsp struts2


【解决方案1】:

这里

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>

【讨论】:

  • 是否可以将它们排列在表格的不同行中?
  • 当然...只要放 而不是
    • 标签
  • 如果我想将此属性的值发送到另一个类,即另一个 Action 类。它不支持 name 属性。
  • s:hidden + s:property(用于发送只读值),或 s:textfield、s:textarea、s:file 等...
【解决方案2】:

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

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

【讨论】:

  • 控制台显示多个值。但是,它仍然没有显示多个值。
猜你喜欢
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多