Technically you don't actually have to be that /smart/ to work it out, you just
need to read the right documentation :)
I only do type conversion and instantiation of my model objects in one
particular way and haven't a good overview of the other ways, such as via a
prepare method.
It would help if someone who's more familiar with the out-of-the-box method
would step in here to give you the lowdown rather than the vague stuff I can
tell you.
Do you know what the interceptor stack is? If you're using the default, struts
will call the prepare interceptor. Have you configured struts.xml to use any
other interceptor stack? So that struts can do the prepare, you implement a
prepare method from the prepare interface on your action which instantiates the
entity beans and populates your action so that the xwork engine has got some
bones to add the meat to. (It'll call the getDoor() to access your IDoor
pre-instantiated objects).
Mike Baranski on 04/02/09 16:56, wrote:
All I meant was that the value="[0]" evaluates to a Door object, which
implements an IDoor, which I want to use for the setter method.
The documentation for type conversions says:
"The framework cannot instantiate an object if it can't determine an
appropriate implementation. It recognizes well-known collection interfaces
(List, Set, Map, etc) but cannot instantiate MyCustomInterface when all it
sees is the interface. In this case, instantiate the target implementation
first (eg. in a prepare method) or substitute in an implementation."
I'm not smart enough to understand what that means...
-----Original Message----- From: Adam Hardy
[mailto:ahardy.str...@cyberspaceroad.com] Sent: Wednesday, February 04, 2009
11:41 AM To: Struts Users Mailing List Subject: Re: Problem passing interface
implementing object to an action from a jsp
Hi Mike,
I can't quite figure out what you're doing wrong. Don't know what you mean
exactly about the "iterator value" - but I guess the problem lies with the
config for your type conversions.
Do you have an xwork-conversions or an action-conversion.properties? That's
where you tell the xwork engine which converter to use for that class and
setter.
Mike Baranski on 04/02/09 16:28, wrote:
Here's my delima:
I have an interface to represent a Door, called IDoor I have an interface
to represent a DoorProvider, called IDoorProvider.
I use Spring to inject the DoorProvider implementation for the particular
application to get lists of doors.
I have an UnlockDoorAction that will unlock an IDoor implementing Door
(that comes from a provider)
Here is my UnlockDoorAction code that is relevant:
public String execute() throws Exception { this.getDoor().unlockDoor(-1);
return SUCCESS; }
public IDoor getDoor() { return this.door; }
public void setDoor(IDoor cd) { this.door = cd; }
Here is the JSP code that causes this action to be executed:
<s:url var="unlock_url" action="unlock" namespace="/door_control"><s:param
name="door" value="[0]"/></s:url> <s:a href="%{unlock_url}"><center><img
alt="Locked" src="<s:url value="/images/locked.png"/>"
border="none"/></center></s:a>
Now, the value="[0]" is an iterator value of an object that implements the
IDoor interface.
The Action returns "input", which (I think) is because it can't figure out
how to set the parameter on the UnlockDoorAction. How do I make the thing
recognize that setDoor(IDoor cd) will take that parameter?
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org