Struts2.2にSpringを導入してサンプルを作成しましたが、同じ事をSeasar2でもやってみました。
前回作成したSeasar2アプリをベースにバージョン変更とサンプル作成を行いました。

バージョン変更

/pom.xmlを変更

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<省略>

  <properties>
    <sa-struts.version>1.0.4-sp7</sa-struts.version>
    <seasar2.version>2.4.45</seasar2.version>
  </properties>

<省略>

  <dependencies>

<省略>

    <dependency>
      <groupId>org.seasar.container</groupId>
      <artifactId>s2-extension</artifactId>
      <version>${seasar2.version}</version>
    </dependency>
    <dependency>
      <groupId>org.seasar.container</groupId>
      <artifactId>s2-framework</artifactId>
      <version>${seasar2.version}</version>
    </dependency>
    <dependency>
      <groupId>org.seasar.container</groupId>
      <artifactId>s2-tiger</artifactId>
      <version>${seasar2.version}</version>
    </dependency>
  </dependencies>
</project>

設定変更

/src/main/resources/app.diconを変更

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components>

<省略>
	
	<!-- コンポーネント自動登録 -->
	<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
		<property name="autoNaming">
			<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
		</property>
		<initMethod name="addClassPattern">
			<arg>"ap.service"</arg>
			<arg>".*Impl"</arg>
		</initMethod>
	</component>
</components>

サンプル作成

/src/main/webapp/WEB-INF/view/index.jspを削除&作成

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
</head>
<body>
<p>サニタイズあり:${f:h(message)}</p>
<p>サニタイズなし:${message}</p>
</body>
</html>

/src/main/java/ap/actions/IndexAction.javaを削除&作成

package ap.action;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import org.seasar.struts.annotation.Execute;

import ap.service.MessageService;

/**
 * Index画面のActionクラス
 * @author 作成者名
 */
public class IndexAction {

	/** メッセージ */
	private String message;

	/**
	 * Index画面の初期処理
	 * @return index.jsp
	 * @throws Exception
	 */
	@Execute(validator = false)
	public String index() {

		// コンポーネント作成(MessageService)
		S2Container container = SingletonS2ContainerFactory.getContainer();
		MessageService messageService = (MessageService) container.getComponent(MessageService.class);

		// メッセージ取得&設定
		this.setMessage(messageService.getMessage());

		return "index.jsp";
	}

	/**
	 * メッセージ取得
	 * @return message
	 */
	public String getMessage() {
		return message;
	}

	/**
	 * メッセージ設定
	 * @param message
	 */
	public void setMessage(String message) {
		this.message = message;
	}

}

/src/main/java/ap/service/MessageService.javaを作成

package ap.service;

/**
 * messageに関する業務処理インタフェイス
 * @author 作成者名
 */
public interface MessageService {

	/**
	 * メッセージ取得
	 * @return メッセージ
	 */
	String getMessage();

}

/src/main/java/ap/service/impl/MessageServiceImpl.javaを作成

package ap.service.impl;

import org.seasar.struts.util.MessageResourcesUtil;

import ap.service.MessageService;

/**
 * messageに関する業務処理実装クラス
 * @author 作成者名
 */
public class MessageServiceImpl implements MessageService {

	/** メッセージ */
	public static final String MESSAGE = "hello.message";

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String getMessage() {
		return MessageResourcesUtil.getMessage(MESSAGE);
	}

}

/src/main/resources/application.propertiesを削除

/src/main/resources/application_ja.propertiesをapplication.propertiesに変更

/src/main/resources/application.propertiesに追加

hello.message=<b>こんにちは!</b>

競合解消

org.seasar.framework.exception.JarDuplicatedException: [ESSR0102]s2-frameworkのJarファイルが複数あります。バージョン=[2.4.40, 2.4.45]

コンソールに上記のエラーが出ます。
旧バージョン(今回は2.4.40)の下記ファイルをエクスプローラー等で削除すれば解消します。

/work/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp*/wtpwebapps/seasar2/WEB-INF/lib/s2-extension-2.4.40.jar
/work/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp*/wtpwebapps/seasar2/WEB-INF/lib/s2-framework-2.4.40.jar
/work/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp*/wtpwebapps/seasar2/WEB-INF/lib/s2-tiger-2.4.40.jar

動作確認

http://localhost:8080/seasar2/
※「こんにちは!」と表示されればOK

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

前の記事

MavenでSeasar2アプリ作成

次の記事

Seasar2にlog4jの設定を追加