サポート > 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 の作り方