(i don't think this made it through the first time i sent it, so i'm trying again. apologies if you get this twice.)
i'm getting some weird problems with url rewriting in a struts 1.2.4 webapp.
specifically, the urls generated by the form, link, and rewrite tags have an extra "/" prepended to them.
struts is mapped like so in web.xml:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/console/*</url-pattern>
</servlet-mapping>here are examples of what's happening:
source: <html:rewrite page="/chandler.css"/> output: //chandler.css
source: <html:link page="/console/user/list"> output: <a href="//console/user/list">
source: <html:form action="/user/create">
output: <form name="userForm" method="post"
action="//console/user/create">i don't have any modules configured in struts-xml. here's the mapping for the page that generates the above output:
<action path="/user/list"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="false"
parameter="list">
<forward name="ok" path="user.list"/>
</action>and here's the mapping for the action pointed to by the form:
<action path="/user/create"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="true"
input="/console/user/list"
parameter="create">
<forward name="failure" path="/console/user/list"/>
<forward name="success" path="/console/user/list"
redirect="true"/>
</action>i've attached the full web.xml and struts-config.xml, in case something non-obvious is throwing me off.
thanks!
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Chandler Sharing Server</display-name> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>MessageResources</param-value> </context-param> <filter> <filter-name>webdavlog</filter-name> <filter-class>org.apache.slide.webdav.filter.LogFilter</filter-class> <init-param> <param-name>logFormat</param-name> <param-value>%T, %t, %P, %m, %s "%l", %i, %p</param-value> </init-param> <init-param> <param-name>outputToConsole</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>outputToServletLog</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>webdavlog</filter-name> <servlet-name>webdav</servlet-name> </filter-mapping> <servlet> <servlet-name>webdav</servlet-name> <servlet-class>org.apache.slide.webdav.WebdavServlet</servlet-class> <init-param> <param-name>domain</param-name> <param-value>/WEB-INF/Domain.xml</param-value> </init-param> <init-param> <param-name>namespace</param-name> <param-value>chandler</param-value> </init-param> <init-param> <param-name>scope</param-name> <param-value/> </init-param> <init-param> <param-name>depth-limit</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>default-mime-type</param-name> <param-value>application/octet-stream</param-value> </init-param> <init-param> <param-name>default-servlet</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>directory-browsing</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>directory-browsing-hide-acl</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>directory-browsing-hide-locks</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>optimizePropfindOutput</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>extendedAllprop</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>lockdiscoveryIncludesPrincipalURL</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>updateLastModified</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> <security-role-ref> <role-name>root</role-name> <role-link>root</role-link> </security-role-ref> <security-role-ref> <role-name>user</role-name> <role-link>user</role-link> </security-role-ref> </servlet> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>convertNull</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>webdav</servlet-name> <url-pattern>/share/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>/console/*</url-pattern> </servlet-mapping> <jsp-config> <taglib> <taglib-uri>html</taglib-uri> <taglib-location>/WEB-INF/tld/struts-html-el.tld</taglib-location> </taglib> <taglib> <taglib-uri>logic</taglib-uri> <taglib-location>/WEB-INF/tld/struts-logic-el.tld</taglib-location> </taglib> <taglib> <taglib-uri>tiles</taglib-uri> <taglib-location>/WEB-INF/tld/struts-tiles-el.tld</taglib-location> </taglib> <taglib> <taglib-uri>c</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>fmt</taglib-uri> <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>fn</taglib-uri> <taglib-location>/WEB-INF/tld/fn.tld</taglib-location> </taglib> </jsp-config> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error</location> </error-page> <security-constraint> <web-resource-collection> <web-resource-name>shared files</web-resource-name> <url-pattern>/share/*</url-pattern> <http-method>COPY</http-method> <http-method>DELETE</http-method> <http-method>GET</http-method> <http-method>HEAD</http-method> <http-method>LOCK</http-method> <http-method>MKCOL</http-method> <http-method>MOVE</http-method> <http-method>OPTIONS</http-method> <http-method>POST</http-method> <http-method>PROPFIND</http-method> <http-method>PROPPATCH</http-method> <http-method>PUT</http-method> <http-method>UNLOCK</http-method> <http-method>VERSION-CONTROL</http-method> <http-method>REPORT</http-method> <http-method>CHECKIN</http-method> <http-method>CHECKOUT</http-method> <http-method>UNCHECKOUT</http-method> <http-method>MKWORKSPACE</http-method> <http-method>UPDATE</http-method> <http-method>LABEL</http-method> <http-method>MERGE</http-method> <http-method>BASELINE-CONTROL</http-method> <http-method>MKACTIVITY</http-method> <http-method>ACL</http-method> <http-method>SEARCH</http-method> <http-method>BIND</http-method> <http-method>UNBIND</http-method> <http-method>REBIND</http-method> <http-method>SUBSCRIBE</http-method> <http-method>UNSUBSCRIBE</http-method> <http-method>POLL</http-method> <http-method>NOTIFY</http-method> </web-resource-collection> <auth-constraint> <role-name>root</role-name> <role-name>user</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>admin console</web-resource-name> <url-pattern>/console/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>root</role-name> <role-name>user</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Chandler Server</realm-name> </login-config> <security-role> <role-name>root</role-name> </security-role> <security-role> <role-name>user</role-name> </security-role> </web-app>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean name="userForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="user" type="org.osaf.chandler.server.model.User"/>
<form-property name="password" type="java.lang.String"/>
<form-property name="confirm" type="java.lang.String"/>
<form-property name="username" type="java.lang.String"/>
</form-bean>
</form-beans>
<global-exceptions>
<exception type="java.lang.Throwable" key="ignore"
handler="org.osaf.chandler.server.web.ChandlerExceptionHandler"/>
</global-exceptions>
<global-forwards type="org.apache.struts.action.ActionForward">
<forward name="error" path="/console/error" redirect="false"/>
</global-forwards>
<action-mappings>
<action path="/error"
type="org.osaf.chandler.server.web.ErrorAction">
<forward name="error.general" path="page.error.general"
redirect="false"/>
<forward name="error.connect" path="page.error.connect"
redirect="false"/>
<forward name="error.notfound" path="page.error.notfound"
redirect="false"/>
</action>
<action path="/user"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="false"
parameter="view">
<forward name="ok" path="user.view"/>
</action>
<action path="/user/update"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="true"
input="/console/user"
parameter="update">
<forward name="cancel" path="/console/user/list" redirect="true"/>
<forward name="failure" path="/console/user"/>
<forward name="success" path="/console/user/list" redirect="true"/>
</action>
<action path="/user/remove"
type="org.osaf.chandler.server.web.UserAction"
parameter="remove">
<forward name="success" path="/console/user/list" redirect="true"/>
</action>
<action path="/user/list"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="false"
parameter="list">
<forward name="ok" path="user.list"/>
</action>
<action path="/user/create"
type="org.osaf.chandler.server.web.UserAction"
name="userForm"
scope="request"
validate="true"
input="/console/user/list"
parameter="create">
<forward name="failure" path="/console/user/list"/>
<forward name="success" path="/console/user/list" redirect="true"/>
</action>
</action-mappings>
<controller nocache="true"
processorClass="org.springframework.web.struts.DelegatingTilesRequestProcessor"/>
<message-resources parameter="MessageResources" null="false"/>
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config"
value="/WEB-INF/tiles-config.xml"/>
<set-property property="definitions-parser-validate"
value="true"/>
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml
,/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="false"/>
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml
,/WEB-INF/action-servlet.xml"/>
</plug-in>
</struts-config>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

