gpt4 book ai didi

java - 如何将特殊的 jsp scriptlet 更改为 jSTL?

转载 作者:行者123 更新时间:2023-11-29 06:17:48 25 4
gpt4 key购买 nike

我想将我的 jsp 页面中的所有 scriptlet 更改为 jSTL,我怎样才能将此代码更改为 jSTL

    <%     Map validationResults = (HashMap) request.getAttribute("validationResults");%> 
<% if (validationResults != null) {
if (validationResults.containsKey("userName")) { //how can i chage this line to jstl ?
%>
<%=((ValidationResult) (validationResults.get("userName"))).getDetails()%> //how can i chage this line to jstl too ?
<%}%>
<%}%>

我的JSTL

<c:set var="validationResults" value="validationResults" scope="request"></c:set>
<c:if test="validationResults != null">
//how can i change the code of map here?
</c:if>

另一个问题是包含 Group 对象列表的 ArrayList,在循环中我想获取每个 Group 对象并检查 Group 对象中的特定方法,如何通过 jSTL 访问这些方法?

我想修改这段代码

    <%List<Group> allGroupList = new ArrayList<Group>();
allGroupList = (ArrayList) request.getAttribute("groups");%>

<% for (int index = 0; index < allGroupList.size(); index++) {%>
<%Group aGroup = (Group) allGroupList.get(index);%>
<label ><%=aGroup.getGroupEName()%></label>
<%if (aGroup.isIsUserGroup()) {%>
<input type="checkbox" name="group" value="<%=aGroup.getGroupNo()%>" CHECKED />
<%} else {%>
<input type="checkbox" name="group" value="<%=aGroup.getGroupNo()%>" />
<%}%>
<%}%>

这是我修改后的代码:

<jsp:useBean id="GroupBean" class="ps.iugaza.onlineinfosys.entities.Group" type="ps.iugaza.onlineinfosys.entities.Group" scope="reqeust">
<c:set var="allGroupList" value="groups" scope="request"></c:set>
<c:forEach var="grp" items="${allGroupList}" varStatus="status">
//?????? what should i do ?
</c:forEach>

最佳答案

第一部分

JSTL 和 EL 只能使用遵循 Java Bean 约定的方法。如果你真的想走这条路,那么你可以绕着你的 map

<c:forEach items="${requestScope.validationResults}" var="mapEntry" varStatus="index">
<c:if test="${mapEntry.key == 'userName'}">
<tr>
<td>${mapEntry.value.details}</td>
</tr>
</c:if>
</c:forEach>

另一种方法是从 map 中获取userName,并检查它是否为null,然后做任何你想做的事。这确实是一个更好的主意。

<c:if test="${requestScope.validationResults['userName'] != null}">
<tr>
<td>${requestScope.validationResults['userName'].details}</td>
</tr>
</c:if>

第二次

<c:forEach var="grp" items="${requestScope.groups}" varStatus="status">
<label>${grp.groupEName}</label>
<input type="checkbox" name="group" value="${grp.groupNo}" ${grp.isUserGroup ? 'checked' : ''} />
</c:forEach>

关于java - 如何将特殊的 jsp scriptlet 更改为 jSTL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4396588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com