<html:text property="userid" />
は画面が切り替わってもパラメータが保持されてますよね。
パラメータの操作(setAttribute)などをしなくても、入力値が保持されるんですね。
<bean:write name="username"/>
はxxxx.getAttribute("username") して取得したインスタンスのtoString()を画面に書き出すみたいです。*1
<logic:present name="username"> <bean:write name="username"/> </logic:present>
というようにlogic:presentで囲まないとusernameがコンテキストにないときにエラーになってしまいます。ようするにxxx.getAttribute("username");がnullかどうかをチェックするためのイディオムです。
<bean:define id="user_name" name="username"/> <%=user_name%>
とすると、
user_name = xxx.getAttribute(username);
といったことが行われます。つまり、スコープからインスタンスを(name属性の名称で)取り出し、(idで指定した文字列の)変数を定義します。
<bean:size id="count" name="username" /> <bean:write name="count"/> <%=count%>
とすると、
int count = xxx.getAttribute(username).size();
みたいなことが行われます。つまり、スコープからインスタンスを取り出し、それがCollectionの場合に要素数を返します。*2
<html:link action="/execute" paramId="userid" paramName="userID">検索</html:link>
ってやると、
execute.do?userid=[userIDの値]
となる。userIDってのはxxx.getAttribute("userID");のこと(確か)。
<logic:empty name="userid">
は..。なんだっけ?
<bean:message key="app.title"/>
デフォルトでは、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")*3;であることに注意。
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>
この記事は
現在のアクセス:75977