Struts"
Line 50: | Line 50: | ||
=Submit Form= | =Submit Form= | ||
− | By replacing JSP with ZUML, | + | By replacing JSP with ZUML, you could enable a ''static'' page with ZK's power. And, you could do any ZUML document can do. In other words, Struts is used only for Model and Controller, while ZK for View. However, sometimes you have to redirect back to submit-based URL (maybe another action with parameters). It can be done easily by enclosing the input components with HTML FORM. For example, |
+ | |||
+ | <source lang="xml"> | ||
+ | <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?> | ||
+ | <n:form action="${c:encodeURL('/login.action')}" method="POST" xmlns:n="native"> | ||
+ | <grid> | ||
+ | <rows> | ||
+ | <row> | ||
+ | User: <textbox name="user"/> | ||
+ | </row> | ||
+ | <row> | ||
+ | Password: <textbox name="password"/> | ||
+ | </row> | ||
+ | <row> | ||
+ | <button label="Login" type="submit"/> | ||
+ | </row> | ||
+ | </rows> | ||
+ | </grid> | ||
+ | </n:form> | ||
+ | </source> | ||
+ | |||
+ | As shown above, notice that | ||
+ | |||
+ | * Every input (including listbox and tree) shall be assigned with a name that will become the parameter's name when submitting the form. | ||
+ | * You could use [[ZUML Reference/EL Expressions/Core Methods/encodeURL|the encodeURL function]] to encode an URL. | ||
+ | |||
+ | For more information, please refer to [[ZK Developer's Reference/Integration/Use_ZK_in_JSP#HTML_Form the Use ZK in JSP section]]. | ||
=Version History= | =Version History= |
Revision as of 07:13, 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
By replacing JSP with ZUML, you could enable a static page with ZK's power. And, you could do any ZUML document can do. In other words, Struts is used only for Model and Controller, while ZK for View. However, sometimes you have to redirect back to submit-based URL (maybe another action with parameters). It can be done easily by enclosing the input components with HTML FORM. For example,
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
<n:form action="${c:encodeURL('/login.action')}" method="POST" xmlns:n="native">
<grid>
<rows>
<row>
User: <textbox name="user"/>
</row>
<row>
Password: <textbox name="password"/>
</row>
<row>
<button label="Login" type="submit"/>
</row>
</rows>
</grid>
</n:form>
As shown above, notice that
- Every input (including listbox and tree) shall be assigned with a name that will become the parameter's name when submitting the form.
- You could use the encodeURL function to encode an URL.
For more information, please refer to ZK Developer's Reference/Integration/Use_ZK_in_JSP#HTML_Form the Use ZK in JSP section.
Version History
Version | Date | Content |
---|---|---|