S2JSF1.0.17を入れました。

いろいろありまして、最近更新が止まっておりました。

先日更新いただきました、S2JSF1.0.17を入れました。
更新内容はこちらにあります。
http://www.seasar.org/wiki/index.php?SeasarWhatsNew%2F2006-09-03#u4d6669a

私からコメント差し上げた下記の修正については、問題なく動作していることを確認しました。
コミッタの皆さま、大変ありがとうございますm(_ _)m

[JSF-20] - m:rendered属性をつけると、HTML上にrendererd属性が付加されてしまう


HTMLも軽くなったようで、軽快です(^^

Tomcatのコネクションプーリングを使う方法

まとまった情報が見つからなかったので。
Seasar2ではS2DBCPがコネクションプーリングの機能を提供していますが、
既にTomcatのコネクションプーリングを利用しているようなアプリケーションと共存する場合、
Seasar2を利用しているアプリケーション側で、Tomcatのコネクションプーリングを利用することも可能です。
 
変更は以外と簡単です。
 

  • まずは、$TOMCAT_HOME$/conf/server.xmlにコネクションプーリングの設定をします。

Contextの下にResourceを登録する例です(Tomcat4.1.x & Oracle

<Context path="/app" reloadable="false" docBase="app" workDir="app/work" debug="0">
	<Resource name="jdbc/MyDB" scope="Shareable" type="javax.sql.DataSource"/>
	<ResourceParams name="jdbc/MyDB">
		<parameter>
			<name>factory</name>
			<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
		</parameter>
		<parameter>
			<name>url</name>
			<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
		</parameter>
		<parameter>
			<name>driverClassName</name>
			<value>oracle.jdbc.driver.OracleDriver</value>
		</parameter>
		<parameter>
			<name>username</name>
			<value>user</value>
		</parameter>
		<parameter>
			<name>password</name>
			<value>pass</value>
		</parameter>

		<parameter>
			<name>maxWait</name>
			<value>3000</value>
		</parameter>
		<parameter>
			<name>maxIdle</name>
			<value>5</value>
		</parameter>
		<parameter>
			<name>maxActive</name>
			<value>3</value>
		</parameter>
	</ResourceParams>
</Context>
  • 続いてはj2ee.diconを修正します。j2ee.diconで設定しているSeasar2のコネクションプーリング設定をコメントにします。
<!--  
<component name="connectionPool"
	class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
	<property name="timeout">600</property>
	<property name="maxPoolSize">10</property>
	<property name="allowLocalTx">true</property>
	<destroyMethod name="close"/>
</component>
<component name="dataSource"
	class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
-->
<component name="initialContext" class="javax.naming.InitialContext"/>
	<component name="dataSource"
   	class="org.seasar.extension.j2ee.JndiDataSource">
   	<arg>initialContext</arg>
   	<arg>"java:comp/env/jdbc/MyDB"</arg>
</component>

動的なラジオボタンの生成方法と、Labelタグが使えない?という疑問

動的なラジオボタンの生成には、S2JSF独自の、selectOneRadio2が利用できます。

具体的には、

s:forEachでラジオボタンHTMLを動的に生成しつつ、
s:selectOneRadio2 で囲むことでid値や初期値の設定を行うものです。
requiredにも対応しています。

<form id="HogeForm" name="HogeForm">

<span m:inject="s:selectOneRadio2"
 id="hooId"
 m:value="#{hogeDto.hooId}"
 m:label="ほげ区分" m:required="true">

<span m:inject="s:forEach" m:items="#{hooList}" m:var="h">
	<input type="radio" id="hooId" value="#{h.id}"/>
	<label for="HogeForm:hooId"><span m:value="#{h.name}"/></label>
</span>

<span m:inject="h:message" m:for="hooId" m:class="error" />

</span>

</form>

以下のようなHTMLがレスポンスされます。

<input type="radio" id="hogeForm:_id134_0:hooId" name="hogeForm:hooId" value="1">
<label for="hogeForm:hooId">ふー</label>

<input type="radio" id="hogeForm:_id134_1:hooId" name="hogeForm:hooId" value="2">
<label for="hogeForm:hooId">ばー</label>
      • -

さて、ここで、ラジオボタンのテキスト部分を囲む<label>タグはどのように書くと有効になるのでしょうか?

ラジオボタンのid属性が動的に決まるため、labelのfor属性と一致させることができません...orz