每次点击上面的中文连接后,浏览器的连接出现命名空间重复问题,如下:http://localhost:8080/bookstore/user/user/user/user/user/user/book.action?currentPage=1&catalogId=5
是这样

解决方案 »

  1.   

    把a标签里的user去掉,直接写成shop.action
      

  2.   


    我对struts进行了模块化的管理,这样有
    struts_user.xml是其中的一个,所以使用了不同的名字空间,就是action提交到自己页面后,名字空间会不停的重复,如下:
    http://localhost:8080/bookstore/user/user/user/user/user/user/book.action?currentPage=1&catalogId=5
    还是不行 
      

  3.   

    你在struts_user.xml中的package中的namespace去掉,a标签中直接写xxx.action,另外建议你不要把jsp文件放在web-inf下,直接在webroot下建一个文件夹比如book专门存放jsp页面,然后在配置action的跳转时换成
    <result name="success">/book/showUser.jsp</result>
      

  4.   


    1.我先对struts.xml进行模块化管理,这个是stuts.xml<struts>
    <include file="strutsxml/struts_admin.xml"/>
    <include file="strutsxml/struts_shophost.xml"/>
    <include file="strutsxml/struts_user.xml"/>
    </struts>然后在struts_user.xml中定义了<package name="user" extends="struts-default" namespace="/user">
    <!--书籍-->
    <action name="book" class="org.action.BookAction" method="book">
    <result name="success">/WEB-INF/jsp/user/book.jsp</result>
    </action>
      </package>那如果按照你的建议将namespace去掉,那我jspd页面的动作(比如:action="login.action")该怎样提交到struts_user.xml中?2.jsp放在WEB-INF下不是更安全吗?这样可以阻止直接访问
      

  5.   

    LZ的配置没有问题,页面写法有问题。给你一种写法看看好用不。<s:url id="idUrl" action="book" namespace="/user"> 
      <s:param name="currentPage">1</s:param>
      <s:param name="catalogId">1</s:param>
    </s:url><s:a href="%{idUrl}" cssClass="STYLE2">考试/教育</s:a>
      

  6.   

    看你的配置是没有什么问题的,放在web-inf下容易打乱程序结构,降低可维护性,所谓的提高安全性完全可以由过滤器来实现。
    去掉namespace后,struts会统一管理这些package以及其下面的action,访问的时候struts会查找package下的对应的action
    另外,第一次访问的时候url里是不是有两个user?以后每点一次就增加一个user?
    我觉得还是你在页面里访问action时加user的问题,6楼的方法你可以尝试下
    只能说这么多了,希望对你有帮助或者有大虾献策
      

  7.   

    在页面上这么写,应该没问题:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:set var="ctx" value="${pageContext.request.contextPath }"/><a href="${ctx}/user/shop.action?currentPage=1" class="STYLE2">商铺</a>
      

  8.   

    我前两天也碰到了这个问题,最终解决了,把方法贴出来与大家分享。
    在每个jsp文件中的<head></head>中加上如下语句就行了
    <base href="<%=basePath%>"/>因为struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
    解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)或者使用myeclipse经常用的,指定basePath