当前位置: 首页 > 知识库问答 >
问题:

无法使用逻辑:iterate在jsp中获取从jsp到表单的数据输入

酆君墨
2023-03-14

主要问题是我使用Struts 1.0。但是我不能改变它。我在jsp中使用arraylist的属性时遇到了一个问题。显示工作正常,但我没有以我的形式获取arraylist中实例化的数据。在调试模式下,我发现它永远不会出现在我的属性的getter中。我在struts 1.0中找到了两种解决方案,但我无法使其正常工作。

我的ActionForm中的数组列表:

private ArrayList<AccountScreenBean> accountsScreen = new ArrayList<AccountScreenBean>();

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中的调用:

<logic:iterate name="BankAccountsActionForm" property="accountsScreen" id="accScreen" indexId="index">
<html:text name="accScreen" property="<%="accountsScreen["+index+"].bic"%>" size="18" maxlength="11" onkeyup="suivant(this,'partPays',11,'accScreen')"
                                 styleClass="inscCB_SaisieTexte" />
</logic:iterate>

控制台错误:

weblogic。servlet。jsp。编译异常:未能编译JSP/JSP/Contents/bankAccountsContent。jsp银行账户内容。jsp:171:81:无法识别此属性。“size=“18”maxlength=“11”。

带下划线的accountsScreen

我还在jsp中尝试了另一种方法:

<html:text name="accScreen" property="accountsScreen[${index}].bic" size="18" maxlength="11"
                                 onkeyup="suivant(this,'partPays',11,'accScreen')"
                                 styleClass="inscCB_SaisieTexte" />

这次控制台错误是:

java.lang.无效的索引属性帐户屏幕[${index}]

你有解决这些问题的方法或其他方法吗?

共有2个答案

葛驰
2023-03-14

我认为您的第一个“解决方案”的问题是

<logic:iterate name="BankAccountsActionForm" property="accountsScreen" id="accScreen" indexId="index">
    <html:text name="accScreen" property="bic" etc="..." />
</logic:iterate>

相反

巫马越彬
2023-03-14

Aleksandr M帮助我找到最终解决方案的线索。事实上,我需要使用简单的引号,而不是双引号。然后,对accountsScreen属性的访问出现了问题,因为它不是一个已索引的属性。最后,我需要两个不同的getter名称,即使参数不一样。因此,我将索引前缀添加到索引getter。

jsp中:

<html:text name="BankAccountsActionForm" property='<%="indexedAccountsScreen["+index+ "].partAccountNumber2"%>'

在java表单中,我需要一个索引属性来访问accountsScreen ArrayList的元素。所以我有了通过索引访问元素的getter:

public void setAccountsScreen(int index, AccountScreenBean accScreen) {
    this.accountsScreen.add(index, accScreen);
}
public AccountScreenBean getIndexedAccountsScreen(int index) {
    return accountsScreen.get(index);
}

谢谢每一个人。

 类似资料:
  • 本文向大家介绍如何使用JSP读取表单数据?,包括了如何使用JSP读取表单数据?的使用技巧和注意事项,需要的朋友参考一下 JSP使用getParameter()方法读取简单参数,并使用getInputStream()方法读取来自客户端的二进制数据流来处理请求。 使用JSP读取表单数据 JSP根据情况使用以下方法自动处理表单数据解析- getParameter():您调用request.getPara

  • 本文向大家介绍jsp中EL表达式获取数据,包括了jsp中EL表达式获取数据的使用技巧和注意事项,需要的朋友参考一下 jsp标签: <jsp:include> <jsp:forward> 实现请求转发 <jsp:param> 给上面的添加参数的 EL表达式: 1.获取变量数据 你好,${name} 2.获取数组数据 你好,${names[0]} 3.获取集合数据 你好,${names[1]} 你好,

  • 但是得到 jspException(jspservletwrapper.java:568)org.apache.jasper.servlet.jspservletwrapper.java:455)org.apache.jasper.server.jspserver.servicejjspfile(jspservlet.java:390)org.apache.jasper.server.jspser

  • 我正在尝试学习jsp页面中的数据库连接。下面是我的代码: 这是我的servlet: 下面是我的dbConnect类: 问题是,在connect()函数中,当涉及行class.forName(“com.mysql.jdbc.driver”)时。newInstance();它会产生一个错误并进入catch块。这里出了什么问题,有人能帮忙吗?多谢了。 编辑:我按照Nambari说的做了,现在我在行con

  • 我正在尝试与Linux中的mysql数据库连接。我知道我在包含jar文件时犯了错误。我不知道如何在linux中引用这些jar文件,就像我们在eclipse或NetBeans中引用它们一样。我正在使用Tomat7运行这些jsp页面。 类型异常报告 消息处理第9行的JSP page/first.JSP时发生异常 说明服务器遇到内部错误,导致它无法完成此请求。 例外情况 JasperException: