Java 在为登录用户选择类型菜单时,使用Eq(JSTL)违反了MVC原则

Java 在为登录用户选择类型菜单时,使用Eq(JSTL)违反了MVC原则,java,jsp,jstl,jsp-tags,Java,Jsp,Jstl,Jsp Tags,我面临着下一个问题。我使用两种菜单(针对老师和学生)。我决定根据角色登录的用户来包含菜单。一切都好。但我使用下一个构造: <div class="left"> <c:if test="${role eq 'TUTOR'}"> <c:import url="/page/tutor/menuForTutor.jsp" charEncoding="UTF-8"/> </c:if> <c:if test="

我面临着下一个问题。我使用两种菜单(针对老师和学生)。我决定根据角色登录的用户来包含菜单。一切都好。但我使用下一个构造:

<div class="left"> 
    <c:if test="${role eq 'TUTOR'}">
        <c:import url="/page/tutor/menuForTutor.jsp" charEncoding="UTF-8"/>
    </c:if>

    <c:if test="${role eq 'STUDENT'}">
        <c:import url="/page/student/menuForStudent.jsp" charEncoding="UTF-8"/>
    </c:if>
</div>
我不能得到我所期望的,因为据我所知,html中的转换jsp发生在创建用户标记之前

你能给我其他的建议吗?谢谢

另外,我还在我的jsp文件中为菜单(fmt)使用本地化


${Menu}

我不知道为什么“eq”是一种不好的风格(或者“eq”是相同的)

但是您的标记将不起作用,因为您无法将JSP指令写入out并期望它会起作用:

pageContext.getOut().write(
   "<c:import url=\"/page/tutor/menuForTutor.jsp\" charEncoding=\"UTF-8\"/>");

顺便说一句,我会用“eq”或“==”来代替。

@DaveNewton我写道我尝试使用自定义标记。但它不起作用。也许我犯了一个错误……那没有道理。那些“人”是谁?他们的论点是什么?顺便说一句,用
代替
有点奇怪。您通常仅对外部资源或本地非JSP文件使用
。@BalusC老师告诉我,在我的情况下,JSP上的eq违反了MVC原则。请转到其他学校。认真地说,这应该写,而不是
pageContext.getOut().write(“”)tag.setContext(pageContext)中的code>
on
tag.setPageContext(pageContext)但它不起作用。在jsp上,我将使用设置上下文、页面上下文、父级和其他设置。您需要模拟,就好像此标记在页面中一样。再一次——这是一个丑陋的解决方案。我不知道是谁告诉你“情商”是个坏习惯,但他/她似乎不对。
<fmt:bundle basename="by.bsuir.testing.resource.content" prefix="content.">
    <fmt:message key="menu" var="Menu"/>
    <fmt:message key="startPage" var="StartPage"/>
    <fmt:message key="menuitem.editInfoAboutTest" var="MenuItemEditInfoAboutTest"/>
</fmt:bundle>
<h1>${Menu}</h1>
<ul>    
    <li>
        <a href="${pageContext.servletContext.contextPath}/page/common/login.jsp">
            ${StartPage}
        </a>
    </li>            
    <li>
        <a href="controller?command=all_Subject_Edit">
            ${MenuItemEditInfoAboutTest}
        </a>
    </li>  
</ul>
pageContext.getOut().write(
   "<c:import url=\"/page/tutor/menuForTutor.jsp\" charEncoding=\"UTF-8\"/>");
ImportTag tag = new ImportTag();
tag.setUrl("/page/tutor/menuForTutor.jsp");
tag.setCharEncoding("UTF-8");
tag.setContext(pageContext);
tag.doStartTag();