サポート > Wagby Developer Network > Wadget の開発 (応用編)
定期的なリロード
次の JavaScript を埋め込むことで、定期的なリロードを行わせることができます。
<script type="text/javascript" language="javascript">
<!--
setTimeout("location.reload(true)", 300000); // 5 min
// -->
</script>
「300000」の部分を変更することで、リロードのタイミングを制御することができます。
短時間でリロードを行わせるようにすると、サーバに負荷がかかりますのでご注意ください。
Wagby に標準で含まれる Wadget 「02logonuser.jsp」を参考にしてください。
これは $(DEVHOME)\env\webpage\system\wadget フォルダ内に格納されています。
Wadget からメインウィンドウを操作する
Wadgetは iframe 内で動作しているため、独立したフレームをもっています。 次のような記述により、ボディ部を操作することができます。
<a href= "/wagby/showListWaring.do" target="_parent">警報一覧</a>
このリンクをクリックすると、メインウィンドウに警報一覧画面(ここでは showListWaring と仮定)が表示されます。
データベースから値を取得する
Wadget からデータベースに直接、アクセスすることもできます。ここでは JSTL の sql タグを用いる方法を紹介します。
<!-- 顧客一覧 -->
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<fmt:setBundle basename="jfcapp"/>
<sql:setDataSource dataSource="jdbc/jfc"/>
<sql:query var="names">
select "name" from "customer"
</sql:query>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
...(中略)...
<body id="wadget">
<table width="100%" border="0">
<c:forEach var="c" begin="0" end="${names.rowCount}">
<tr>
<td style="font-size:9pt; padding: 2px;">
<c:out value="${names.rowsByIndex[c][0]}"/>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
- この例では、customer モデルが定義されており、かつモデル項目 name が用意されていると仮定しています。
- Wagby は標準で SQL タグは有効になっていません。ですので、taglib 宣言が必要です。
- sql:setDataSource 要素を使うことで、Wagby が提供するデータソースを使うことができるようになります。
- 検索結果へのアクセスは、rowCount プロパティで結果数を取得し、rowsByIndex プロパティで要素から値を取得するようにします。
更新処理を行う SQL を用いる場合は注意が必要です。Wagby で定義したモデルは、独自のロック機構やキャッシュ機構を備えています。
そのため、これらの機構をスキップして直接、SQL で更新すると問題が生じます。Wagby でのモデル定義を行っていないテーブルの操作であれば、これらの問題はありません。
基本 |
さまざまな Wadget の作り方
