taglibを使用したjspの作成
Strutsでは,Strutsで提供されているtaglibを十分に活用してjspを作成すると,開発効率がよくなるかもしれない.
最後にjspを作成すれば完成である.ただし,これは今回たまため画面用ファイルとしてjspファイルしか使用していないからである.別にjspファイルでなくhtmlやServletを使用しても適切に必要なファイルを作成すれば動作はする.ここで示すサンプルにはtaglibが使用されているが,その詳細はまた別の機会に.また,面倒臭いので実際にどんなhtmlが表示されるのかは示さない.興味のある人はサンプルを試したください.サンプルのソースはページサンプルのソースとデプロイにあります.
index.jspはこのサンプルにおいてActionにパラメータを渡すためのページである.たとえば,$CONTEXT/Action1.do?message=hoge&globalFlag=trueなどを動的に指定するためのフォームを提供する.
<% /* $Id: taglib.xml,v 1.1.1.1 2003/08/12 14:45:44 matsu Exp $ */ %> <%@page contentType="text/html; charset=EUC_JP" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <html:html> <head> <title>Struts sample</title> </head> <body> <h1>Struts sample</h1> <h2>Action1</h2> <html:form action="/Action1" > <html:text property="message" size="20" maxlength="20" /><br /> <html:radio property="globalFlag" value="true">Global-Forward</html:radio><br /> <html:radio property="globalFlag" value="false">Local-Foward</html:radio><br /> <html:submit property="submit" value="送信" /> <html:reset value="リセット" /> </html:form> <h2>Action2</h2> <html:form action="/Action2" > <html:text property="message" size="20" maxlength="20" /><br /> <html:radio property="globalFlag" value="true">Global-Forward</html:radio><br /> <html:radio property="globalFlag" value="false">Local-Foward</html:radio><br /> <html:text property="number" size="3" maxlength="10" /><br /> <html:submit property="submit" value="送信" /> <html:reset value="リセット" /> </html:form> </body> </html:html>
GlobalTypw2は論理名globalForward2の実際のForward先である.これは要素global-forwardsで記述されているので,どのアクションからでもForwardできるが,Type2Formgオブジェクトが存在しないとInternalServerErrorになる.
<% /* $Id: taglib.xml,v 1.1.1.1 2003/08/12 14:45:44 matsu Exp $ */ %> <%@page contentType="text/html; charset=EUC_JP" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <html:html> <head> <title>GlobalType2</title> </head> <body> <h1>GlobalType2</h1> このページはstruts-config.xmlの要素global-forwrdsの内容の要素forwardで指定したjspである.<br /> globalFlagは<br /> <bean:write name="Type2Form" property="globalFlag" /><br /> で,この値によって論理名globalForward2にForwardされた.<br /> <bean:write name="Type2Form" property="message" /><br /> 上の文から,ActionFromBeanであるType2FormのデータをActionクラスであるAction2が変更したことがわかる.<br /> <bean:write name="Type2Form" property="number" /><br /> Type2Formの数字もAction2で処理されている. </blockquote> </body> </html:html>

