【问题标题】:Can't access a property with <html:checkbox property="..."> when iterating a list迭代列表时无法使用 <html:checkbox property="..."> 访问属性
【发布时间】:2010-06-17 11:19:48
【问题描述】:

在我的 Struts 表单中,我有一个列表。在 JSP 中,我像这样迭代它:

<c:forEach items="${MyForm.types}" var="type">
    <tr>
        <td>${type.name}</td>
        <td>${type.forced}</td>
        <td>${type.receive}</td>
        <html:checkbox property="type.receive" />
    </tr>
</c:forEach>

现在&lt;html:checkbox 不工作了。我总是收到以下错误:

Caused by: javax.servlet.jsp.JspException: No getter method for property type.receive of bean org.apache.struts.taglib.html.BEAN

但实际上在我的表单类中有这个属性的 getter。是这样写的:

public Boolean getReceive() {
  return receive;
}

当我删除复选框时,还可以像上面的&lt;td&gt;-tag 一样显示属性,所以我不知道问题出在哪里。

也许我以错误的方式访问它?

【问题讨论】:

  • 我不做Struts,但是错误信息基本上是告诉你没有getFalse() 方法。这必须提供新的见解。也许您需要&lt;html:checkbox bean="auspraegung" property="cbx_uebernehmen"&gt; 或使用&lt;logic:iterate&gt; 进行迭代。
  • 对不起,这是错误的错误信息。我已经附加了新的。

标签: java jsp struts struts-1 html


【解决方案1】:

struts Action 表单中的所有单个属性类型都应该是String。你必须将cbx_uebernehmen定义为String类型。

【讨论】:

  • 不,我不这么认为。我已经在使用带有布尔属性的&lt;html:radio&gt;-tag 并且它可以工作。有关详细信息,请参阅struts.apache.org/1.2.7/userGuide/struts-html.html#checkbox(“[...] 与此字段关联的基础属性值应为布尔类型 [...]”)。
  • 这当然是不正确的建议。动作表单可以包含非字符串类型的变量。
【解决方案2】:

我认为您的 getter 方法应该如下所示(是...而不是 get...):

public Boolean isCbx_uebernehmen() {
  return cbx_uebernehmen;
}

应该这样工作。如果仍然没有,请尝试将返回数据类型从 Boolean 更改为 boolean

【讨论】:

  • 这是Boolean 属性,而不是boolean。无论如何,Javabean 规范都允许两者,否则这将是 Struts 中的一个错误。
  • 是的,我也不认为它真的会产生任何影响,但只是认为如果由于某种原因它仍然无法工作,它可能值得一试。我认为问题在于命名。
  • 嗯,然后,Struts 用户指南(由 Bernhard V 在他的评论中链接到另一个答案)确实声明“与此字段关联的基础属性值应该是 boolean类型>。”
  • 从一开始就不能使用布尔值,所以我改用布尔值。然而,在相同的形式中,我可以在&lt;html:checkbox&gt; 中毫无问题地使用它的布尔属性。它还有一个“get”-getter。
【解决方案3】:

我现在是这样做的:

<c:forEach items="${MyForm.testList}" var="testElement" varStatus="status">
    <html:checkbox property="testList[${status.count-1}].checkboxValue" />
</c:forEach>

感谢this question

【讨论】:

    猜你喜欢
    • 2021-10-26
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2014-09-19
    相关资源
    最近更新 更多