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(“”)标记source code.method setContext required StringI changedtag.setContext(pageContext)中的code>
ontag.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();