0

我在使用 Struts 时遇到问题。它没有识别 bean,即使它在上面定义了一行

我有这个代码

<logic:iterate id="com" name="Handler" property="commandList">
23:                             <optgroup id="${com.id}" style="display:none;">
24:                                 <logic:iterate id="rem" name="com" property="remotes">
25:                                     <option value="${rem.id}"><bean:write name="rem" property="name"/></option>
26:                                 </logic:iterate>
27:                             </optgroup>
28:                         </logic:iterate>

我在第 25 行收到以下错误:

javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "rem" in any scope

这没有意义,因为 bean 是在第 24 行上面定义的

有任何想法吗?谢谢

4

1 回答 1

1

正如您所说,您的代码语法是正确的。我的猜测是remotesbean 的对象之一是空值。在这种情况下,根据struts1 参考

如果您正在迭代的集合可以包含空值,则仍将执行循环,但不会为该循环迭代创建页面范围属性(由 id 属性命名)。您可以使用 <logic:present>and<logic:notPresent>标签来测试这种情况。

标签将<bean:write name="rem" property="name"/>被执行,但 rem 不会存在于任何范围内。检查 Array/List/Map/etc 中的空值remotes,或使用<logic:present>标签添加测试。

于 2013-04-25T08:42:03.280 回答