替换scriptlet以避免.jsp文件中的Java代码

时间:2019-05-17 13:10:53

标签: javascript java jsp jstl scriptlet

我将相同的Java scriptlet复制并粘贴到多个.jsp文件中。 我想用易于维护且可读性更好的解决方案代替它

    <%
    if (!MediaUtil.validateAuthorization()) {
        out.println("Unauthorized");
    } else {
        String srcquery = request.getQueryString();
        if (srcquery == null) {
            srcquery = "";
        }
        User currentUser = UserService.findCurrentUser();

        if (currentUser == null) {
            out.println(User.MESSAGE_NO_USER);
        } else {
    %>

    <html>
    <head>

编辑:FrenchFigaro回答后,我已使用JSTL重写了代码。感兴趣的人的最终代码如下:

<c:choose>
    <c:when test="${!MediaUtil.validateOrganization()}">
        <c:out value="Unauthorized"/>
    </c:when>
    <c:otherwise>
        <c:set var="srcquery" value="<%=request.getQueryString()%>"/>
        <c:choose>
            <c:when test="${srcquery == null}">
                <c:set var="srcquery" value=""/>
            </c:when>
        </c:choose>
        <c:set var="currentUser" value="<%=UserService.findCurrentUser()%>"/>
        <c:choose>
            <c:when test="${currentUser == null}">
                <c:out value="<%=User.MESSAGE_NO_USER%>"/>
            </c:when>
            <c:otherwise>
                <html>

                (...)

                </html>
            </c:otherwise>
        </c:choose>
    </c:otherwise>
</c:choose>


1 个答案:

答案 0 :(得分:0)

要替换if / else部分,可以使用<c:if><c:choose>

第一个提供一个选择,没有其他选择(但是两个条件相反的标签可以解决问题)。

在您的情况下,最好使用<c:choose>

<c:choose>
    <c:when test="${condition}">...</c:when>
    <c:otherwise>...</c:otherwise>
</c:choose>

对于其余部分,您将需要使用Bean在servlet和JSP之间传输数据。