Even if Spring considers it valid, that doesn't mean that other packages will be able to treat immutable, non-JavaBeans as JavaBeans. (*Chris*)
On Mon, May 9, 2011 at 3:39 AM, Marcus <mar...@marcusbond.co.uk> wrote: > You can if you want to use a String as a Spring bean, it's a different > issue as to whether or not it is considered best practice or whether there > are alternatives. You can find examples on the SpringSource forum if you > want, commented upon by Springy folk. It is perfectly valid to do so.. > > Sorry to sound off here but could input to the topic be constrained to why > it might be that Struts somehow messes up the redirect by picking this bean > up even though there are no references to it an any of the struts action > beans or in the struts.xml.. I think we can infer from this that if any > context file, regardless of purpose (related to Struts, data access or any > other whatever) declared a String as a bean this will mess struts redirects > up.. which is something that shouldn't happen. > > > > > On 09/05/2011 11:16, Ilya Kazakevich wrote: > >> Not sure you can use primitive wrappers and strings as spring beans. For >> example autowiring does not work for them. >> Try the following: >> >> 1) inject literal directly >> Instead of >> <property ref="myString" >> Try >> <property value="myStringContent" >> >> 2) Create your own wrapper for string like Configuration class with method >> getMyProperty >> >> >> Ilya Kazakevich, >> Developer >> JetBrains Inc >> http://www.jetbrains.com >> "Develop with pleasure!" >> >> -----Original Message----- >> From: Marcus [mailto:mar...@marcusbond.co.uk] >> Sent: Monday, May 09, 2011 11:27 AM >> To: user@struts.apache.org >> Subject: Re: Strange behaviour with Spring >> >> Not sure what you mean, the bean I'm referring to is a Spring bean not a >> JavaBean (two unrelated concepts).. there is no requirement when using >> the Spring framework to not create Spring beans of type String. >> >> Regardless, this doesn't help explain why the String is being picked up >> by the Struts framework and set on the redirect when there is nothing in >> the configuration to indicate it should.. >> >> On 09/05/2011 07:13, Chris Pratt wrote: >> >>> You can't create beans that implement java.lang.String, it's immutable >>> and >>> doesn't follow the bean spec. >>> (*Chris*) >>> >>> On Sun, May 8, 2011 at 2:11 PM, Marcus Bond<mar...@marcusbond.co.uk> >>> >> wrote: >> >>> Hi, >>>> >>>> I'm using Struts 2.2.3 and have observed some bizarre behavior when >>>> using >>>> Spring to provide my actions.. In order to simplify this and prove the >>>> problem I have created a project with a single static html file, and a >>>> single action in struts.xml which references a bean in my spring context >>>> file. >>>> >>>> What basically happens is that if I declare a bean in my spring context >>>> (bean unrelated toany struts action) that is of class java.lang.String >>>> >>> (as I >> >>> do for a log4j filepath) then when I perform a redirect in an action >>>> >>> mapping >> >>> this gets appended to the end of the url as the anchor. >>>> >>>> If I navigate to http://localhost:8080/My App/simpleRedirect >>>> the result is a reirect to the 'simple' action but note the url struts >>>> >>> has >> >>> redirected to: >>>> >>>> >>>> >> http://localhost:8080/MyApp/simple#this%20is%20a%20java.lang.String%20bean%2 >> 0in%20my%20spring%20context >> >>> For some reason the org.apache.struts2.dispatcher.ServletRedirectResult >>>> class is being instantiated by with the anchor and location constructor >>>> >>> args >> >>> set to the value of my spring bean by the StrutsSpringObjectFactory >>>> >>>> If I remove the String bean from the spring contect then the url behaves >>>> >>> as >> >>> normal, redirecting to: >>>> http://localhost:8080/MyApp/simple >>>> >>>> Have been scratching my head trying to find where this behaviour is >>>> happening but have run out of time.. is this a known issue? >>>> >>>> Files content: >>>> *Spring context file:* >>>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> <beans xmlns="http://www.springframework.org/schema/beans" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xmlns:aop="http://www.springframework.org/schema/aop" >>>> xmlns:tx="http://www.springframework.org/schema/tx" >>>> xsi:schemaLocation="http://www.springframework.org/schema/beans >>>> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd >>>> http://www.springframework.org/schema/tx >>>> http://www.springframework.org/schema/tx/spring-tx-2.5.xsd >>>> http://www.springframework.org/schema/aop >>>> http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> >>>> >>>> <!-- Expose String as a bean (usually for a file path)--> >>>> <!-- Picked up by Struts and set as location and anchor on a >>>> redirect >>>> and presented in url >>>> If commented out this does not happen --> >>>> <bean id="someFileName" class="java.lang.String"> >>>> <constructor-arg value="this is a java.lang.String bean in my >>>> >>> spring >> >>> context" /> >>>> </bean> >>>> >>>> <!-- action beans --> >>>> <bean name ="simpleAction" >>>> >>> class="uk.co.marcusbond.action.SimpleAction" >> >>> scope="prototype" /> >>>> </beans> >>>> >>>> *Struts file:* >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> <!DOCTYPE struts PUBLIC >>>> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" >>>> "http://struts.apache.org/dtds/struts-2.0.dtd"> >>>> <struts> >>>> <package name="simple" extends="struts-default"> >>>> <!-- returns success and shows index.html --> >>>> <action name="simple" >>>> class="simpleAction"> >>>> <result>index.html</result> >>>> </action> >>>> >>>> <!-- redirects through the 'simple' action --> >>>> <action name="simpleRedirect"> >>>> <result name="success" type="redirect">simple</result> >>>> </action> >>>> </package> >>>> </struts> >>>> >>>> *Java class uk.co.marcusbond.action.SimpleAction* >>>> package uk.co.marcusbond.action; >>>> >>>> public class SimpleAction { >>>> >>>> public String execute() { >>>> return "success"; >>>> } >>>> } >>>> >>>> >>>> >>>> >>> __________ NOD32 6105 (20110508) Information __________ >>> >>> This message was checked by NOD32 antivirus system. >>> http://www.eset.com >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >> >> >> __________ NOD32 6106 (20110509) Information __________ >> >> >> This message was checked by NOD32 antivirus system. >> http://www.eset.com >> >> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > >