Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在用户描述符中';t work pageContext.getOut(";c:import…>;)_Java_Jsp_Taglib_Tld - Fatal编程技术网

Java 在用户描述符中';t work pageContext.getOut(";c:import…>;)

Java 在用户描述符中';t work pageContext.getOut(";c:import…>;),java,jsp,taglib,tld,Java,Jsp,Taglib,Tld,我还有一个问题。在jsp页面中,我使用两个用户(导师和学生)的菜单,这取决于我从菜单文件中选择的角色。像这样吗 <c:if test="${role eq 'Tutor'}"> <c:import url="/page/menuForTutor.html" charEncoding="UTF-8"/> </c:if> <c:if test="${role eq 'Student'}"> &l

我还有一个问题。在jsp页面中,我使用两个用户(导师和学生)的菜单,这取决于我从菜单文件中选择的角色。像这样吗

<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;
    }       
}
public类菜单扩展了标记支持{
私有静态最终字符串PARAM_ROLE_TUTOR=“TUTOR”;
私有静态最终字符串PARAM_ROLE_STUDENT=“STUDENT”;
@凌驾
公共int doStartTag(){
HttpServletRequest=(HttpServletRequest)页面上下文。
getRequest();
HttpSession session=request.getSession();
字符串角色=(字符串)session.getAttribute(“角色”);
if(参数角色等于(角色)){
试一试{
pageContext.getOut().print(“”);
}捕获(IOEX异常){
Logger.getLogger(MenuTag.class.getName()).log(Level.SEVERE,null,ex);
}
}else if(参数角色学生相等(角色)){
}
返回跳过单元体;
}       
}
当我使用debag时,我看到我完成了所有步骤,但jsp上并没有显示导师的菜单。有什么想法吗?

我假设会话(“角色”)设置在另一个代码部分中

设置JspWriter out=pageContext.getOut()

代码中有如下内容

。。。。
JspWriter out=pageContext.getOut();
HttpSession session=request.getSession();
字符串角色=(字符串)session.getAttribute(“角色”);
if(参数角色等于(角色)){
试一试{
out.println(“”);
out.flush();
//如果有,请评估身体
返回已缓冲的评估体;
.......
否则返回跳转体;
编辑见代码:您必须“返回EVAL_BODY_BUFFERED;”

我假设会话(“角色”)设置在另一个代码部分中

设置JspWriter out=pageContext.getOut()

代码中有如下内容

。。。。
JspWriter out=pageContext.getOut();
HttpSession session=request.getSession();
字符串角色=(字符串)session.getAttribute(“角色”);
if(参数角色等于(角色)){
试一试{
out.println(“”);
out.flush();
//如果有,请评估身体
返回已缓冲的评估体;
.......
否则返回跳转体;

编辑see代码:您必须“返回EVAL_BODY_BUFFERED;”“

您在哪里设置了”session.putValue(“角色”,参数,角色,导师);“您在哪里设置了”session.putValue(“角色”,参数,角色,导师);“不,我使用pageContext作为字段类标记支持。当我关闭时,我在页面上什么都没有,我认为在调用时会出现这个问题。flush();当我调用.flash()时,我也可以在jsp上打印不同的数字和字符串,但其他文件不需要((对不起,请使用EVAL_BODY_BUFFERED instaed。不,我使用pageContext作为字段类标记支持。当我结束时,我不在页面上显示任何内容,我认为在调用.flush()时,以及当我调用.flash()时,会出现这个问题)另外,我可以在jsp上打印不同的数字和字符串,但其他文件不需要((对不起,请使用EVAL_BODY_BUFFERED instaed)。
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;