2008年11月25日火曜日

RAD v7.5 試用版 を使ってJSFとEJB3.0・・・(5)

手順

1. サンプルDBを作成
2. DBをWAS v7のデータソースに登録
3. JPAプロジェクトを作成
4. EJBを作成(findメソッドのみ)
5. JSFを作成
6. EJBに挿入メソッドを作成する
(前回)
7. JSFを作成(挿入)
(今回はここまで)
8. EJBに更新メソッドを作成する
9. JSFを作成(更新)

7. JSFを作成(挿入)

挿入を受け付けるJSF画面を追加します。(行き当たりばったりの画面設計・・・)

JSFの観点から言えばNothing Specialです。淡々と行きます。

■insert.jsp
<%@page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<f:view>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>挿入</title>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-31j">
</head>
<body>
<CENTER>
<h2>挿入</h2>
<h:form>
myid:
<h:inputText value="#{mySampleBean.id}" />
value:
<h:inputText value="#{mySampleBean.value}" />
<h:commandButton value="挿入"
action="#{mySampleBean.insertValue}" />
</h:form>
</CENTER>
</body>
</html>
</f:view>

■/WEB-INF/result/failure2.jsp(重複キーエラーの時に表示させます)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<html>
<head>
<title>exists</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
</head>
<body>
Duplicate key exists. Could not insert.
</body>
</html>

■/WEB-INF/results/failure2-1.jsp(その他のシステムエラー用です。UTできませんが念のため)

/WEB-INF/result.failure2.jspの"Duplicate key exists. Could not insert."を"System error"に変えるだけ

■/WEB-INF/reusults/success2.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<html>
<head>
<title>exists</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
</head>
<body>
Inserted bean.<br>
id -> ${ mySampleBean.id }
value -> ${ mySampleBean.value }
</body>
</html>

■faces-config.xml
以下を追加
  <navigation-rule>
<from-view-id>/insert.jsp</from-view-id>
<navigation-case>
<from-outcome>failure2</from-outcome>
<to-view-id>/WEB-INF/results/failure2.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure2-1</from-outcome>
<to-view-id>/WEB-INF/results/failure2-1.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>success2</from-outcome>
<to-view-id>/WEB-INF/results/success2.jsp</to-view-id>
</navigation-case>
</navigation-rule>

■MySampleBeanに太字部分を追加
package test.beans;

import java.io.Serializable;

import javax.ejb.EJB;

import test.MySample;
import test.MySampleException;
import test.MySampleSessionLocal;

public class MySampleBean implements Serializable {

private static final long serialVersionUID = 1L;

int id;
String value;

@EJB(name="MySample")
private MySampleSessionLocal mySampleSession;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}

public String checkInput() {
MySample ms = mySampleSession.findMySample(id);
if (ms != null) {
this.setValue(ms.getMyFlag());
return "success";
} else {
return "failure";
}
}

public String insertValue() {
try {
mySampleSession.addMySample(id, value);
} catch(MySampleException mse) {
return "failure2";
} catch(Exception e) {
return "failure2-1";
}
return "success2";
}
}

以上です。いや、簡単ですね。
.

0 件のコメント: