*** ApplicationResources.properties にアクセスする
 <bean:message key="app.title"/>


*** タグをxhtmlに対応する
デフォルトでは、Strutsのタグはxhmlに対応していない(閉じタグとか)。
 <html:html xhtml="true">
とすることで、xhtml形式のタグを出力します。


*** 初期アクセスのパラメタエラーを回避する
たとえば何かを検索する画面(JSP)で、最初にその画面を開いたときは検索パラメータがのってませんよね。検索パラメータを画面に表示している場合、最初のアクセスだけエラーにならないようなロジックが必要になりそうですが、こんな回避法がありました。何のことはない、パラメタチェックを入れているだけですが、こんな感じでやるとキレイになりますね。
 こちらは検索側の記述
 <html:form action="/search">
   <html:text property="input" />
   <html:submit>送信</html:submit>
 </html:form>

 こちらが表示側の記述
 <logic:present name="input">
  入力値: <bean:write name="input" />
 </logic:present>
ちなみに、下のinputはrequest.getParameter("input");ではなく、xxxx.getAttribute("input")((xxxxはrequestとか、sessionとかいろいろ));であることに注意。


***直接JSPを呼ばないで、下記の形式で呼ぶようにする。
 <action path="/forward" parameter="/WEB-INF/jsp/index.jsp" type="org.apache.struts.actions.ForwardAction" />


**validateの使用方法
FormBeanのvalidateメソッドを実装する。
 public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
 	ActionErrors errors = new ActionErrors();
	//ユーザIDが空だったら
 	if(userId==null || userId.length()==0){
 		ユーザIDのテキストボックスでエラーが発生した、エラー文言は「ユーザID」
 		errors.add("userId",new ActionError("errors.required","ユーザID"));
 	}
 	return errors;
 }

errors.add("userId",new ActionError("errors.required","ユーザID"));の意味は~
userIdが、<html:errors property="userId"/>に対応し、"errors.required"がプロパティファイルに対応し"ユーザID"が、{0}に対応する。

ApplicationResources.propertiesに下記内容を追加(ファイルは/WEB-INF/classesにある)
 errors.header=<hr><font color="red"><h3>ERROR</h3>
 errors.footer=<hr></font>
 errors.required={0} Required    ← {0}にerrors.addでセットした文言が入る。

struts-config.xml のActionで
        <action
            path="/user_regist"
            type="kino.action.UserRegistAction"
            name="userRegistForm"
            scope="request"
            attribute="userRegistForm"
            input="/regist.jsp">
のようにエラー遷移先(/regist.jsp)を指定する

まとめると、errors.add("userId",new ActionError("errors.required","ユーザID"));
で、errors.required={0} Required の{0}をユーザIDで置換して
ユーザID Required となる

**リンクタグでの、パラメータ指定方法
 <%
 	Map map=new HashMap();
 	map.put("data1","value1");
 	map.put("data2","value2");
 	map.put("data3","value3");
 	map.put("data4","value4");
 	request.setAttribute("map",map);
 %>
 <html:link page="/execute.do" name="map">aaaa</html:link>
みたく、mapを指定すると、パラメータとなる。(nameでBeanを指定、propertyでmapを指定してもよい。) 





***サンプル
struts-config.xml
 <form-beans>
 	<form-bean name="testForm" 
 	type="org.apache.struts.action.DynaActionForm">
 		<form-property name="name" type="java.lang.String" />
 		<form-property name="word" type="java.lang.String" />
 	</form-bean>
 </form-beans>
 
 <action-mappings>
 	<action name="testForm" path="/test" scope="request" 
 	type="kino.action.TestAction">
 		<forward name="success" path="/WEB-INF/jsp/Test.jsp">
 		</forward>
 	</action>
 </action-mappings>
につき
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <%@ 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>
 <%@ page 
 language="java"
 contentType="text/html; charset=SHIFT_JIS"
 pageEncoding="SHIFT_JIS"
 %>
 <META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
 <META name="GENERATOR" content="IBM WebSphere Studio">
 <TITLE>Test.jsp</TITLE>
 </HEAD>
 
 <BODY>
 <html:form action="/test">
 	<html:text property="name" />
 	<br />
 	<html:text property="word" />
 	<html:submit>送信</html:submit>
 </html:form>
 
 <logic:present name="name">
 	<bean:write name="name" />
 </logic:present>
 <br />
 <logic:present name="word">
 	<bean:write name="word" />
 </logic:present>
 </BODY>
 </html:html>


***転送サンプル
struts-config.xml:
 <action-mappings>
 	<action path="/forward" type="org.apache.struts.actions.ForwardAction" 
 parameter="/WEB-INF/jsp/Test.jsp"></action>
 </action-mappings>
で、forward.do でTest.jspに転送される。




----
-メモ書きなので、つたない内容です。ご了承下さい。コメントがありましたらお願いします。 -- [[きの]] &new{2004-01-08 (木) 18:33:31};

#comment
#navi(Struts)

SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS