hechenhui1983
2010-05-21 14:32
浏览 489
已采纳

Struts2为什么不能直接调用jsp页面???

使用struts2时,过滤器配置如下:

struts2
org.apache.struts2.dispatcher.FilterDispatcher


struts2
[color=red]*.do[/color]

在jsp中使用了struts2的标签,为什么不能直接访问jsp页面,求高人解释一下???

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • myali88 2010-05-24 11:24
    已采纳

    [quote]
    你加入struts标签的引用试试,就好了
    [code="java"]
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


    My JSP 'test.jsp' starting page





    /s:form


    [/code]
    [/quote]
    确实不行,会出现@hechenhui1983说的错误,我觉得应该不能直接访问JSP,如果页面包含了struts标签的话,因为从其对标签的处理可以看出,下面是org.apache.struts2.views.jsp。ComponentTagSupport中的一段:
    [code="java"]
    public int doStartTag() throws JspException {
    component = getBean(getStack(), (HttpServletRequest) pageContext.getRequest(), (HttpServletResponse) pageContext.getResponse());
    Container container = Dispatcher.getInstance().getContainer();
    container.inject(component);
        populateParams();
        boolean evalBody = component.start(pageContext.getOut());
    
        if (evalBody) {
            return component.usesBody() ? EVAL_BODY_BUFFERED : EVAL_BODY_INCLUDE;
        } else {
            return SKIP_BODY;
        }
    }
    

    [/code]
    这里对标签开始的处理,就要求取得Dispatcher,没有后面应该就无法进行了。

    点赞 评论
  • 拽拽的初行者 2010-05-21 14:39

    [b]Struts2的标签,你有没有使用到Action中的内容呢?

    你在jsp中是如何使用Struts2的标签的?贴出来看看![/b]

    点赞 评论
  • myali88 2010-05-21 14:42

    [quote]在jsp中使用了struts2的标签,为什么不能直接访问jsp页面[/quote]
    这是什么意思?描述明确些。

    点赞 评论
  • 拽拽的初行者 2010-05-21 14:43

    [color=blue][b]你的配置Struts2拦截不到jsp页面,于是就不会有Action执行,所以不会有OGNL Context了。

    (以下的前提都是 在jsp的头部引入了struts2的taglib)

    这是如果jsp中含有struts2的标签,且标签使用到了OGNL Context中的值,可会解析错误。

    如果包含struts2的标签,且标签没有使用到了OGNL Context中值,则解析正常,可以显示。[/b][/color]

    点赞 评论
  • dawudiju 2010-05-21 16:17

    请把问题描述清楚点

    点赞 评论
  • 拽拽的初行者 2010-05-24 07:26

    [quote]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


    My JSP 'test.jsp' starting page





    /s:form


    就是因为使用了struts2的标签,如果我把struts2的标签都换掉,没有任何问题 [/quote]

    [b] 这样的jsp可以直接访问的。如Struts2的标签要使用Action中的信息,那么jsp就不能直接被访问了[/b]

    点赞 评论
  • 拽拽的初行者 2010-05-24 10:04

    你加入struts标签的引用试试,就好了
    [code="xml"]<%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


    My JSP 'test.jsp' starting page





    /s:form

    [/code]
    点赞 评论

相关推荐 更多相似问题