java - 在我的 jsp 中使用 arraylist 的属性与 struts-bean.tld

标签 java struts-1 taglib

我在 jsp 中使用数组列表的属性时遇到问题。 我的 ActionForm 中的数组列表:

private ArrayList<Account> accounts = new ArrayList<Account>();

Arraylist 中 Account 对象的类声明:

public class Account implements Serializable, Cloneable {
    private String bic;

    public String getBic() {
        return bic;
    }

    public void setBic(final String newBic) {
        bic = newBic;
    }
}

我的jsp中的调用:

<bean:write name="BankAccountsActionForm"
                            property="accounts.get(0).bic" />

控制台错误:

javax.servlet.jsp.JspException: No getter method for property accounts.get(0).bic of bean BankAccountsActionForm

您有解决方案或其他方法吗?

我有一个糟糕的替代方案,直接在表单中使用属性 accountbic1 。但它会导致后面大量的工作来重新影响真正的ArrayList的所有临时属性。

最佳答案

如果您在 Struts 1.x 中有一个项目集合,则使用 <logic:iterate>标签。

添加 struts-logic.tld taglig 位于 JSP 之上,如下所示:

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

然后,使用<logic:present><logic:iterate>你可以迭代你的 ArrayList如下:

<logic:present name="accounts">
    <logic:iterate id="account" name="accounts">
        <bean:write name="account.bic" />
    </logic:iterate>
</logic:present>

如果您想迭代集合并访问特定索引,请使用 indexId<logic:iterate>像这样:

<logic:present name="accounts">
    <logic:iterate id="account" name="accounts" indexId="index">
        <logic:equal name="index" value="0">
            <bean:write name="account.bic" />
        </logic:equal>
    </logic:iterate>
</logic:present>

使用 JSTL 也可以完成同样的事情:

<logic:present name="accounts">
    <logic:iterate id="account" name="accounts" indexId="index">
        <c:if test="${index == 0}">
            <bean:write name="account.bic" />
        </c:if>
    </logic:iterate>
</logic:present>

确保 Account类有属性 bic 的 getter/setter 方法.

关于java - 在我的 jsp 中使用 arraylist 的属性与 struts-bean.tld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29557659/

相关文章:

java - 使用 lambda 表达式将 hashmap 保存到 String

java - 将图像放入 JFace 表单元格导致图像出现在第一列中

java - 如何在 Web 应用程序中使用 Virtualizer?

java - 将响应转发到 struts 中的另一个操作并发送响应文件

jsp - 如何获取struts中action类中改变的单选按钮值

grails - 使用g:link和g.link时结果不同

java - 为什么在 Java 中使用 Stack 时会出现 java.util.ConcurrentModificationException?

单元测试 grails 标签

grails - Grails Groovy代码内部值

java - Spring OXM 不适用于 Struts 1