項目中要轉發action,我就用
Xml代碼
<result name="success" type="redirectAction">my.action</result>
但是今天再用的時候發現一個莫名其名的問題,程序轉向了一個不存在的url ,如下:
原來應該是這樣的:http://localhost:8080/focus/account/my.action
其中focus,是項目名,就是上下文路徑,account是命名空間,my.action是 我的action。
這樣才是對的,可是今天的url卻是 http://localhost:8080/focus/pass/account/my.action!pass
由於根本不存在這樣的url,就提示404錯誤。。
調試了很久才發現是加入了JCR170的問題,jcr170的bean文件不憤如下:
Xml代碼
<bean id="jcrSessionFactory" class="org.springmodules.jcr.JcrSessionFactory">
<property name="repository" ref="repository"/>
<property name="credentials">
<bean class="javax.jcr.SimpleCredentials">
<constructor-arg index="0" value="bogus"/>
<!-- create the credentials using a bean factory -->
<constructor-arg index="1">
<bean factory-bean="password"
factory- method="toCharArray"/>
</constructor-arg>
</bean>
</property>
<!-- register some bogus namespaces -->
<!--
<property name="namespaces">
<props>
<prop key="foo">http://bar.com/jcr</prop>
<prop key="hocus">http://pocus.com/jcr</prop>
</props>
</property>
-->
<!-- register a simple listener
<property name="eventListeners">
<list>
<bean class="org.springmodules.jcr.EventListenerDefinition">
<property name="listener">
<bean class="org.springmodules.examples.jcr.DummyEventListener"/>
</property>
</bean>
</list>
</property>
-->
</bean>
<!-- create the password to return it as a char[] -- >
<bean id="password" class="java.lang.String">
<constructor-arg index="0" value="pass"/>
</bean>
上面就是關鍵代碼,id為password的值是pass,就是他跑到struts2的 redirectAction裡面!
目前具體原因不明,不過有解決方法,就是把
<!-- create the password to return it as a char[] -->
<bean id="password" class="java.lang.String">
<constructor-arg index="0" value="pass"/>
</bean>
注釋掉,然後修改:
<constructor-arg index="1">
<bean factory-bean="password" factory- method="toCharArray"/>
</constructor-arg>
為:
<constructor-arg index="1" value="pass"/>
就行了!!如果有知道原因的說一下,感激不盡!!