English 中文(简体)
在用户描述符中没有工作页面Context.get out (“<c:import...>”)
原标题:In user descriptor doesn t work pageContext.getOut("<c:import...>")

我有一个下一个问题。 在 jsp 页面中, 我为两个用户( 教师和学生) 使用菜单, 因为他们依赖角色, 我从菜单文件中选择应该包括的角色 。 像这样的 Smth

<c:if test="${role eq  Tutor }">
                <c:import url="/page/menuForTutor.html" charEncoding="UTF-8"/>
</c:if>
<c:if test="${role eq  Student }">
             <c:import url="/page/menuForStudent.html" charEncoding="UTF-8"/>
</c:if>

我应该使用用户描述符

public class MenuTag extends TagSupport{

    private static final String PARAM_ROLE_TUTOR = "Tutor";
    private static final String PARAM_ROLE_STUDENT = "Student";

    @Override
    public int doStartTag(){
        HttpServletRequest request = (HttpServletRequest)pageContext.
                                                   getRequest();
        HttpSession session = request.getSession();
        String role = (String) session.getAttribute("role");
        if (PARAM_ROLE_TUTOR.equals(role)){
            try {
                pageContext.getOut().print("<c:import url="/page/menuForTutor.html" charEncoding="UTF-8"/>");
            } catch (IOException ex) {
                Logger.getLogger(MenuTag.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if(PARAM_ROLE_STUDENT.equals(role)){
        }
        return SKIP_BODY;
    }       
}

当我使用混蛋时,我看到我做所有步骤,但 老师的菜单没有显示在jsp上。有什么想法吗?

最佳回答

我想会话("作用")是另一个代码部分设定的!

设置 JspWriter 出 = pageContext.get out ();

类似代码中跟随的东西

JspFactory  factory     = JspFactory.getDefaultFactory();
PageContext pageContext = factory.getPageContext(
this,
request,
response,
null,  // errorPageURL
false, // needsSession
JspWriter.DEFAULT_BUFFER,
true   // autoFlush
);
    ....
            JspWriter   out     = pageContext.getOut();
            HttpSession session = request.getSession();
            String role = (String) session.getAttribute("role");
            if (PARAM_ROLE_TUTOR.equals(role)){
                try {
                    out.println("<c:import url="/page/menuForTutor.html" charEncoding="UTF-8"/>");
                    out.flush();
                    // Evaluate the body if there is one
                    return EVAL_BODY_BUFFERED;
.......

else return SKIP_BODY;

EDIT看到代码: 你必须“返回 EVAL_BODY_BUFFERED;”

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签