aspose file tools*
The moose likes Struts and the fly likes html:Link  not able to retrieve ActionForward Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "html:Link  not able to retrieve ActionForward" Watch "html:Link  not able to retrieve ActionForward" New topic
Author

html:Link not able to retrieve ActionForward

Gaurav Chikara
Ranch Hand

Joined: Jun 09, 2000
Posts: 410
Hello All

I have following snippets of my struts-config.xml file
and the jsp file which is using html:link tag


Struts-Config
<action path="/QGPARAMETERS"
type="com.symantec.qg.action.QGParametersAction"
name="QGPARAMETERS">
<forward name="success" path="QG_PARAMETERS_TILE"/>
<forward name="qgParametersChanged" path="HOMEPAGE_TILE"/>
<forward name="forwardName" path="/some.jsp"/>
</action>


JSP
<html:form action="/QGPARAMETERS">
<table border=0 width="100%">
<tr>
<td class="leftnav-primary" width = "75%">
<html:link forward="symantecExpress" >
<font size='2' color = 'black'> Express</font>
</html:link><br>
<html:link forward="forwardName">
<font size='2' color = 'black'>Government</font>
</html:link><br>
<html:link forward="forwardName">
<font size='2' color = 'black'>Academic</font>
</html:link><br>
<html:link forward="forwardName">
<font size='2' color = 'black'>Rewards</font>
</html:link>
</td>
<td>
</td>
</tr>
</table>
</html:form>



but I am gretting Cannot retrieve ActionForward named forwardName' Error
If anyone has idea on what could be going wrong and can share that will be of great help
Thanks in advance

:roll: :roll:


SCJP,SCWCD,SCBCD<br />If Opportunity doesn't knock then build the door
Naseem Khan
Ranch Hand

Joined: Apr 25, 2005
Posts: 809


forward identifies the name of the global forward element that
will receive control of the forwarded request not forward within action tag.

So you have to use global-forward tag in struts-config.xml



Remember one more thing in xml files, the position of tags are also very important.

Naseem


Asking Smart Questions FAQ - How To Put Your Code In Code Tags
Gaurav Chikara
Ranch Hand

Joined: Jun 09, 2000
Posts: 410
Thanks a bunch
I have one more query
Is there any way we can set a request parameter value in a bean using the

html:link tag I know paramId and paramName are there but do we have to define a bean in struts-config.xml file whose name matched that of paramName

Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
do we have to define a bean in struts-config.xml file whose name matched that of paramName

No. The bean just has to be in some scope (request, session, application, or page).

So, for this tag:

<html:link forward="myForward" paramId="parm1" paramName="myBean" paramProperty="foo" />

As long as you have a bean named myBean in some scope (request, for example) Struts will find it and execute getFoo() on it to retrieve the value to be placed in parm1 of the url.


Merrill
Consultant, Sima Solutions
Gaurav Chikara
Ranch Hand

Joined: Jun 09, 2000
Posts: 410
Thanks for your reply
It will be great if you clarify one more doubt that do we need to define bean usig bean tags of struts or bean tag of jsps
<jsp:useBean> shall be preferred or <bean efine name=myBean scope=request> should suffice



Thanks in advance



:roll:
Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
Neither.

Just put the bean in a scope. This would normally be done in an action class prior to forwarding to the page.

Example:

in your Action class:

MyBean myBean = new MyBean();
myBean.setFoo("whatever");
request.setAttribute("myBean", myBean);

in your JSP:

<html:link forward="myForward" paramId="parm1" paramName="myBean" paramProperty="foo" />

In this example, you don't need either a <jsp:useBean> or a <bean:define> The bean has alread been put in request scope by the action.

If you want to put the bean in scope in the JSP itself, you can do that with either a <jsp:usebean> or a <bean:define> tag. Either will work, just take your choice. Once the bean is in a scope, the <html:link> tag will find it.

Example: The following would call a link with ?parm1=foo.

<bean:define id="myStringBean" value="foo" />
<html:link forward="myForward" paramId="parm1" paramName="myStringBean" />
[ July 23, 2006: Message edited by: Merrill Higginson ]
Gaurav Chikara
Ranch Hand

Joined: Jun 09, 2000
Posts: 410
Thanks a ton again Merril
I have one last question (Please correct me if I am wrong)

the paramid and paramvalue tags on html:link sets the value of bean only on clicking the link right?

Our database is down so I couldn't check it.

Please confirm if possible
Thanks in advance
Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
If you are asking whether the forward specified in <html:link> is permanently changed by the paramId and ParamValue parameters, the answer is no, it is not. It is modified for this link only.
Gaurav Chikara
Ranch Hand

Joined: Jun 09, 2000
Posts: 410
No I was asking if we have multiple html:link on a jsp and each link tries to set a diff value to paramId parameter so those values will be set only on clicking of that link


<html:link forward="myForward" paramId="parm1" paramName="myBean" paramProperty="foo" >show 1 </html:link>

<html:link forward="myForward" paramId="parm2" paramName="myBean" paramProperty="foo" >show 2 </html:link>


If he clicks link show 1 then foo property will be set to value parm1
and if he clicks link show 2 then it will be set to parm2

Correct me if I am wrong

Thanks again
 
 
subject: html:Link not able to retrieve ActionForward