You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Juan Pablo Pizarro <ju...@gmail.com> on 2008/06/04 18:05:39 UTC

several action execs to fill a form

Hi All.

I've a problem, I use a RequestListAction that return a List and it is
used to fill a form. The problem is that the getRequest method is
called several times before showing the result (form filled).

My action:

	private Request request;

	public Collection<CommandResult> getLstCommand() {
	try {
	lstCommand = new CommandResultServiceImpl().getByIdRequest(idRequest);
	} catch (Exception e) {
	lstCommand = null;
	}
	return lstCommand;
	}

	@Override
	public String execute() throws Exception {
	return SUCCESS;
	}

	public Request getRequest() {
	try {
	request = new RequestServiceImpl().getByIdRequest(idRequest);
	} catch (Exception e) {
	request = null;
	}
	return request;
	}


My form:

<s:url id="url" action="RequestList" />
<h3>REQUEST DETAIL</h3>
<s:form action="%{url}" method="POST">
	<table>
	<tr>
	<td><s:property value="%{getText('login')}" /></td>
	<td><s:property value="request.user.login" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('country')}" /></td>
	<td><s:property value="request.user.country.fullName" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('subject')}" /></td>
	<td><s:property value="request.subject" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('description')}" /></td>
	<td><s:property value="request.description" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('fail')}" /></td>
	<td><s:property value="request.failEntity.fail.description" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('node')}" /></td>
	<td><s:property value="request.node.description" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('severity')}" /></td>
	<td><s:property value="request.severity.severity" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('siebelId')}" /></td>
	<td><s:property value="request.siebelId" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('remedyId')}" /></td>
	<td><s:property value="request.remedyId" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('paasPA')}" /></td>
	<td><s:property value="request.paasPA" /></td>
	</tr>
	<tr>
	<td><s:property value="%{getText('datetime')}" /></td>
	<td><s:property value="request.datetime" /></td>
	</tr>
	</table>

	<br>
	<s:if test="%{lstCommand != null}">
	<s:if test="%{lstCommand.size > 0}">
	<table class="ex">
	<tr>
	<th>Command</th>
	<th>Description</th>
	<th>Result</th>
	</tr>
	<s:iterator value="lstCommand" id="commands" status="cmds_stat">
	<tr>
	<td><s:property value="command.command" /></td>
	<td><s:property value="command.description" /></td>
	<td><textarea rows="7" cols="30" readonly><s:property
value="result"/></textarea> </td>
	<!--<td><s:property value="result" /></td>-->
	<s:hidden value="idCommand" />
	</tr>
	</s:iterator>
	</table>
	</s:if>
	<s:else>
	<s:label>There are not commands associated.</s:label>
	</s:else>
	</s:if>
	<br>
	<s:submit value="FINISH" align="left" />
</s:form>

My struts.xml
		<action name="ShowRequest"
			class="org.gblx.action.tr.ShowRequestAction">
			<result>/TR/showRequest.jsp</result>
		</action>

Any idea?

Thanks

JP

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: several action execs to fill a form

Posted by Dave Newton <ne...@yahoo.com>.
getRequest() is called repeatedly because you have a whole bunch of OGNL that looks like "request.node.description" etc. that calls getRequest().

If you were using Spring/etc. to handle service instantiation you wouldn't have to worry about this. Or you could just not get a new request every time.

Dave


--- On Wed, 6/4/08, Juan Pablo Pizarro <ju...@gmail.com> wrote:

> From: Juan Pablo Pizarro <ju...@gmail.com>
> Subject: several action execs to fill a form
> To: "Struts Users Mailing List" <us...@struts.apache.org>
> Date: Wednesday, June 4, 2008, 12:05 PM
> Hi All.
> 
> I've a problem, I use a RequestListAction that return a
> List and it is
> used to fill a form. The problem is that the getRequest
> method is
> called several times before showing the result (form
> filled).
> 
> My action:
> 
> 	private Request request;
> 
> 	public Collection<CommandResult> getLstCommand() {
> 	try {
> 	lstCommand = new
> CommandResultServiceImpl().getByIdRequest(idRequest);
> 	} catch (Exception e) {
> 	lstCommand = null;
> 	}
> 	return lstCommand;
> 	}
> 
> 	@Override
> 	public String execute() throws Exception {
> 	return SUCCESS;
> 	}
> 
> 	public Request getRequest() {
> 	try {
> 	request = new
> RequestServiceImpl().getByIdRequest(idRequest);
> 	} catch (Exception e) {
> 	request = null;
> 	}
> 	return request;
> 	}
> 
> 
> My form:
> 
> <s:url id="url" action="RequestList"
> />
> <h3>REQUEST DETAIL</h3>
> <s:form action="%{url}"
> method="POST">
> 	<table>
> 	<tr>
> 	<td><s:property
> value="%{getText('login')}"
> /></td>
> 	<td><s:property
> value="request.user.login" /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('country')}"
> /></td>
> 	<td><s:property
> value="request.user.country.fullName"
> /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('subject')}"
> /></td>
> 	<td><s:property value="request.subject"
> /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('description')}"
> /></td>
> 	<td><s:property
> value="request.description" /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('fail')}"
> /></td>
> 	<td><s:property
> value="request.failEntity.fail.description"
> /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('node')}"
> /></td>
> 	<td><s:property
> value="request.node.description" /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('severity')}"
> /></td>
> 	<td><s:property
> value="request.severity.severity"
> /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('siebelId')}"
> /></td>
> 	<td><s:property
> value="request.siebelId" /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('remedyId')}"
> /></td>
> 	<td><s:property
> value="request.remedyId" /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('paasPA')}"
> /></td>
> 	<td><s:property value="request.paasPA"
> /></td>
> 	</tr>
> 	<tr>
> 	<td><s:property
> value="%{getText('datetime')}"
> /></td>
> 	<td><s:property
> value="request.datetime" /></td>
> 	</tr>
> 	</table>
> 
> 	<br>
> 	<s:if test="%{lstCommand != null}">
> 	<s:if test="%{lstCommand.size > 0}">
> 	<table class="ex">
> 	<tr>
> 	<th>Command</th>
> 	<th>Description</th>
> 	<th>Result</th>
> 	</tr>
> 	<s:iterator value="lstCommand"
> id="commands" status="cmds_stat">
> 	<tr>
> 	<td><s:property value="command.command"
> /></td>
> 	<td><s:property
> value="command.description" /></td>
> 	<td><textarea rows="7"
> cols="30" readonly><s:property
> value="result"/></textarea> </td>
> 	<!--<td><s:property value="result"
> /></td>-->
> 	<s:hidden value="idCommand" />
> 	</tr>
> 	</s:iterator>
> 	</table>
> 	</s:if>
> 	<s:else>
> 	<s:label>There are not commands
> associated.</s:label>
> 	</s:else>
> 	</s:if>
> 	<br>
> 	<s:submit value="FINISH"
> align="left" />
> </s:form>
> 
> My struts.xml
> 		<action name="ShowRequest"
> 			class="org.gblx.action.tr.ShowRequestAction">
> 			<result>/TR/showRequest.jsp</result>
> 		</action>
> 
> Any idea?
> 
> Thanks
> 
> JP
> 
> ---------------------------------------------------------------------
> 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