Well, as I said, the 'value' attribute is evaluated by OGNL, so what's
going to happen here is:
1. the container will evaluate the EL expression ${mapItem.value.id}
2. the result of 1. (e.g. int '99') will be passed into the custom action
3. Struts will attempt to evaluate the value '99' as an OGNL expression
4. If the result of 3. is not a String, Struts will apply the
appropriate conversion, before calling setSomeAtt() on your action
Assuming ${mapItem.value.id} returns an int or Integer value, I would
*expect* that OGNL would 'do the right thing' with it. However, you may
want to try being more explicit: value="%{mapItem.value.id}"
What you have below doesn't look wrong particularly wrong, so if the
above change doesn't do the trick, post your exact, real code, to be
sure there isn't something odd in there.
I'd still suggest you boil this down to a simple, stand-alone test case
that others could use to test the behaviour. If this is a bug somewhere
in Struts, a test case will greatly improve the chances of it being
tracked down and fixed quickly.
L.
Felipe Rodrigues wrote:
I'm sorry, but I'm away from my code, so I'll try to reproduce here.
The code is pretty simple.
------------------------------------------------------ END OF CODE
--------------------------------------------
The JSP:
<c:foreach items="somMap" var="mapItem">
<s:url action="Home!loadHome" id="myURL">
<s:param name="someAtt" value="${mapItem.value.id}"/>
</s:url>
<s:a href="%{myURL}" notifyTopic="myTopic" theme="ajax"
target="someDiv">MyLink</s:a>
</c:forEach>
=================================
The Action
public class HomeAction {
private String someAtt;
public void setSomeAtt(String someAtt){
//Here someAtt has the value of param, and the appended " .
this.someAtt = someAtt;
}
public String loadHome(){
// some stuff here.
return "success";
}
}
------------------------------------------------------ END OF CODE
--------------------------------------------
I think this cover all things. There is some others details, like all of
that is inside a TabbedPannel, but I don't think this matters.
When I'm debbugging I can see the value in the session represented by this
one ${mapItem.value.id} is ok (without " )
but when I got my breakpoint at setSomeAtt the value has the " as its last
charracter.
So weird, but I'm wondering if no one else have seen this behavior.
If this code is not enougth, let me know and tomorrow I can send you the
real piece of code.
Thanks,
Felipe
Laurie Harper wrote:
Felipe Rodrigues wrote:
Hi guys,
Sometimes when I use <s:param tag, the value that I got in my action has
a "
appended to it. I can treat that by replacing this, but it is not a good
solution.
Does anybody heard anything about that?
I've looked at the source code of param tag in the Struts source code,
and
there is a findValue(String expr) that calls ValueStack.findValue(String
expr) as well. What exactly is that expr (to me seems to be the name we
define in param tag). Anyway, I didn't found anything wrong there, but I
don't know how the value get there.
The param tag's 'value' attribute is evaluated -- i.e. the value you
supply is treated as an OGNL expression. See the tag syntax
documentation for details.
Without seeing an example of this behaviour (i.e. some code/markup that
reproduces the problem) it's going to be difficult to diagnose. Can you
come up with a minimal test case that demonstrates the behaviour you're
describing?
L.
[1] http://struts.apache.org/2.x/docs/tag-syntax.html
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]