我在jsp中使用arraylist的属性时遇到问题。我的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:没有用于属性帐户的getter方法。get(0).bic of bean BankAccountsActionForm
你有解决方案或其他方法吗?
我有一个糟糕的选择,直接在表单中使用属性accountbic1。但它会导致大量工作,从而重新影响实际ArrayList
的所有临时属性。
如果Struts1.x中有一个项目集合,那么使用<logic:iterate>
标记。
在JSP顶部添加struts-logic.tld
标签,如下所示:
<%@ 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>
如果要迭代集合并访问特定索引,请在<logic:iterate>
上使用indexId
,如下所示:
<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方法。
这只是getter和setter方法的错误。根据POJO标准重新编码您的getter和setter,如下所示:
从setter方法中删除final,并根据POJO标准更改setter和getter方法名称,如下所示:
public String getBic() {
return bic;
}
public void setBic(String bic) {
this.bic = bic;
}
尝试一些类似的东西:
<bean:write name="BankAccountsActionForm" property="accounts.get(1).bic" />
因为它是ArrayList而不是Array。
确保您在操作类**BankAccountsActionForm**中有帐户的getter setter
public List getAccounts ();
public void setAccounts(List acc);
根据POJO标准更改setter和getter方法名称,如下所示:
public String getBic() {
return bic;
}
public void setBic(final String newBic)
{ bic = newBic; }
它将工作良好
从setter方法中删除final,然后重试并按以下写入
public void setBic(String bic )
{ this.bic = bic ; }