Struts"

From Documentation
Line 30: Line 30:
  
 
== Access Data Model of Struts in Composer ==
 
== Access Data Model of Struts in Composer ==
 +
 +
The data (so-called model) provided by Struts (or the action) can be retrieved by invoking <javadoc type="interface" method="getAttribute(java.lang.String)">org.zkoss.zk.ui.Execution</javadoc>. For example,
  
 
<source lang="java">
 
<source lang="java">

Revision as of 06:53, 11 February 2011

The use of Struts with ZK is straightforward: just replace JSP pages with ZUL pages. You don't need to modify action handlers, data models and others. All you need to do is to map the result view to a ZUL page instead of JSP. In additions, EL expressions will work the same way in the ZUL page.

Use ZUL instead of JSP

First, let us take the Hello World example in Struts tutorial as an example. We could provide a ZUL page called HelloWorld.zul to replace HelloWorld.jsp as follows.

<?page title="Hello World!"?>

<h:h2 xmlns:h="xhtml">
${messageStore.message}
</h:h2>

As shown, you could use the same EL expression to access the data provided by Struts and your action handler.

Then, you map the hello action to HelloWorld.zul by modifying WEB-INF/classes/struts.xml as follows.

<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
	<result name="success">/HelloWorld.zul</result>
</action>

Then, you could visit http://localhost:8080/Hello_World_Struts2_Ant/hello.action as you are used to and have the same result.

Of course, it is a ZUL document. You could have any Ajax behavior you'd like.

Access Data Model of Struts in Composer

The data (so-called model) provided by Struts (or the action) can be retrieved by invoking Execution.getAttribute(String). For example,

package foo;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zk.ui.*;
import org.zkoss.zul.*;
import org.apache.struts.helloworld.model.MessageStore;

public class FooComposer implements org.zkoss.zk.ui.util.Composer {
	public void doAfterCompose(Component comp) {
		MessageStore mstore = Executions.getCurrent().getAttribute("messageStore");
		comp.appendChild(new Label(":"+mstore.getMessage()));
	}
}

Submit Form

Version History

Last Update : 2011/02/11


Version Date Content
     



Last Update : 2011/02/11

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.