从bean访问值:写入逻辑的value属性:等于Struts

时间:2013-02-01 14:19:12

标签: jsp struts logic javabeans

我正在使用Struts 1.3.10

开发一个应用程序

我需要迭代2个列表才能在jsp中打印结果。需要使用第一个列表迭代来从列表2中选择元素。因此我尝试这样做:

 <logic:iterate name="bodyForm" property="domainList" id="domList">
     <div><h1><bean:write name="domList" property="domain"/><h1>
          <ul> <logic:iterate name="bodyForm" property="locationsList" id="locList" >
                   <logic:equal name="locList" property="domain" value="<bean:write name="domList" property="domain"/>" >
                       <li><div>....</div></li>
                   <logic:equal>
               </logic:iterate>
           </ul>
     </div>
</logic:iterate>

但是,当我在“logic:equal”的值内部调用“bean:write”时,我得到一个错误。 你知道怎么解决吗?

当你吸我时,我使用了JSTL标签来获得解决方案,但是在网页的源代码中我得到了这个结果:

    <h1>domList.domain</h1>
        <ul>
          <li class="grey">
             <div>locList.countries.name </div>
             <div>locList.name</div>
             <div>locList.hostname</div>
             <div>locList.ip</div>
          </li>
          <li class="">
             <div>locList.countries.name </div>
             <div>locList.name</div>
             <div>locList.hostname</div>
             <div>locList.ip</div>
          </li>
        </ul>

我似乎没有读取bean信息......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

学习JSTL和JSP EL,并使用它代替这些过时的struts标记:

<c:forEach var="domList" items="${bodyForm.domainList}">
    <div>
        <h1><c:out value="${domList.domain}"/><h1>
        <ul> 
            <c:forEach var="locList" items="${bodyForm.locationsList}">
                <c:if test="${locList.domain == domList.domain}">
                    <li><div>....</div></li>
                </c:if>
           </c:forEach>
       </ul>
    </div>
</c:forEach>

AFAIR,JSTL存在了10年之久。从那以后,the Struts documentation说:

  

注意: - 此taglib中的许多功能也可在JavaServer Pages标准标记库(JSTL)中使用。 Apache Struts小组鼓励在可能的情况下在Struts特定标记上使用标准标记。