struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Lee <plasma...@gmail.com>
Subject Re: Strange behaviour with Spring
Date Mon, 09 May 2011 16:29:55 GMT
Ok, I didn't see you aren't actually referencing the string bean in your
action. That won't help
On 9 May 2011 17:23, "Andrew Lee" <plasma147@gmail.com> wrote:
> He's not using it as a java bean. Spring beans can be immutable.
>
> Is it because when spring wires up your action it considers it to be a
> parameter as you have get and set methods? So it appends it to the url. If
> you inject t string bean via constructor injection and not via setter
> injection and remove the getters and setters ,does that work?
> On 9 May 2011 16:54, "Chris Pratt" <thechrispratt@gmail.com> wrote:
>> 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 <marcus@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:marcus@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<marcus@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-unsubscribe@struts.apache.org
>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>
>>>>
>>>>
>>>> __________ NOD32 6106 (20110509) Information __________
>>>>
>>>>
>>>> This message was checked by NOD32 antivirus system.
>>>> http://www.eset.com
>>>>
>>>>
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message