Cart問題/ページレイアウトの追加
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Cart問題]]
2008/04/30からのアクセス回数 &counter;
#contents
Cart問題にページレイアウトを追加します。
ページレイアウトには、SiteMeshを使用し、サイドメニューに...
追加しました。
** SiteMeshを使う [#d9bdfa80]
今回はじめて使ったSiteMeshですが、WebDB Press Vol. 18に紹...
Cart問題をヘッダ、サイドメニュー、本体の構成にしました。
今回例題に使用したワインは、ドイツのWeingut Dr. Schnellさ...
#ref(pagelayout.jpg);
*** SiteMeshの特徴 [#y16cfa18]
SiteMeshはservletのフィルターとして存在し、
複数のHTMLの内容を分解し、一つのHTMLページに再構成するツ...
これによってframeを使わなくてもサイドメニューを表示したり...
ができるようになります。
*** ライブラリーの追加 [#v1599590]
いつものように必要なjarファイルをpom.xmlに追加します。
今回必要となるのは、sitemeshとdisplaytagです。
dependecyタグは以下のようになります。
#pre{{
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>displaytag</groupId>
<artifactId>displaytag</artifactId>
<version>1.1</version>
</dependency>
}}
これらは、実行時にのみ必要となりますので、eclipseの設定フ...
*** 追加ファイル [#bdf0ec19]
sitemeshの追加で追加・変更のあるファイルは以下の通りです。
- src/main/webapp/WEB-INF/decorators/main.jsp(追加)
- src/main/webapp/WEB-INF/decorators/side.jsp(追加)
- src/main/webapp/WEB-INF/jspf/declarations.jsp(追加)
- src/main/webapp/WEB-INF/decorators.xml(追加)
- src/main/webapp/WEB-INF/web.xml(変更)
- src/main/webapp/index.jps(変更)
- src/main/webapp/menu.jps(追加)
decoratorsには、組み立て後に使用するjspファイルを保存しま...
declarations.jspは、必要なタグライブラリの宣言、文字コー...
decorators.xmlが、sitemeshのdecoratorsの設定ファイルです。
menu.jpsは、サイドメニュー用のjspファイルです。
*** web.xmlの変更について [#mdbe88cd]
sitemeshは、フィルターとして実装されていますので、web.xml...
する必要があります。
web.xmlに追加された定義は以下の通りです。
#pre{{
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.P...
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.htm</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
}}
*** decorators.xmlの設定について [#f0c97a03]
decorators.xmlでは、decoratorsディレクトリにある出力用jsp...
設定を行います。
ここでは、main.jsp, side.jpsの設定を行っています。
#pre{{
<decorators defaultdir="/WEB-INF/decorators">
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
<decorator name="side" page="side.jsp"/>
</decorators>
}}
*** declarations.jspfについて [#v280efe4]
declarations.jspfは、あまり変更することはないでしょう。
#pre{{
<%@ page language="java"
session="false"
contentType="text/html; charset=UTF-8"
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix...
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix=...
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" p...
<%@ taglib prefix="form" uri="http://www.springframework....
<%@ taglib uri="http://displaytag.sf.net" prefix="display...
}}
*** side.jspについて [#z685711e]
side.jspでは、設定されたHTML入力をそのまま出力するだけな...
以下のようになります。
#pre{{
<%@ taglib uri="http://www.opensymphony.com/sitemesh/deco...
<decorator:body/>
}}
*** main.jsp [#a00279de]
サイドにmain.jspですが、
id="side"のdivタグでサイドメニューに入力されるページを指...
メインのページを指定します。
特に、sideには、2つの入力を指定しているところに注意してく...
- /cartops/list.htm:カート内容を表示するURL
- /menu.jsp:サイドメニューを定義したjspファイル
です。このようにjspの他に別のページへのURLが指定できるこ...
#pre{{
<%@ include file="/WEB-INF/jspf/declarations.jspf" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/deco...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page...
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
<html xmlns="http://www.w3.org/1999/xhtml">
<c:url value="/images/logo.jpg" var="logoUrl"/>
<head>
<title><decorator:title default="Weingut Dr.Schnell Onl...
<link rel="StyleSheet" href="<c:url value="/css/cart.cs...
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="max-age=0"/>
<meta http-equiv="Expires" content="0"/>
<decorator:head/>
</head>
<body id="store">
<div id="banner">
<img src="${logoUrl}">
Weingut Dr.Schnell
</div>
<div id="columns">
<div id="side">
<page:applyDecorator page="/cartops/list.htm" name="s...
<page:applyDecorator page="/menu.jsp" name="side"/>
</div>
<div id="main">
<decorator:body/>
</div>
</div>
</body>
</html>
}}
*** index.jpsの変更 [#r8a6a02a]
表示をカタログファイルに変更しました。
#pre{{
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/c...
<!-- simply redirects to the main switchboard page of the...
<c:redirect url="/productops/catalog.htm"/>
}}
*** menu.jsp [#x2a8d96b]
メニューはHome以外は、ダミーのメニューとしました。
#pre{{
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>メニュー</title>
</head>
<body>
<c:url value="/index.jsp" var="indexLink"/>
<a href="${indexLink}">Home</a><br />
<a href="http://www..../faq">Questions</a><br />
<a href="http://www..../news">News</a><br />
<a href="http://www..../contact">Contact</a><br />
</body>
</html>
}}
** javaファイルの変更 [#nda7ed9e]
javaでは、CartOpsController.javaのaddの表示をカートの中身...
変更します。
#pre{{
public ModelAndView add(HttpServletRequest request, H...
Integer productId = new Integer(ServletRequestUti...
setupCartService(request);
Product product = manager.findById(productId);
LineItem item = new LineItem();
item.setProductId(productId);
item.setProduct(product);
cartService.addLineItem(item);
ModelAndView modelAndView = new ModelAndView("redire...
return modelAndView;
}
}}
たったこれだけの変更でページレイアウトを追加できるとは、...
フィルターですね。
** コメント [#z6cdda54]
この記事は、
#vote(おもしろかった[1],そうでもない[1],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[Cart問題]]
2008/04/30からのアクセス回数 &counter;
#contents
Cart問題にページレイアウトを追加します。
ページレイアウトには、SiteMeshを使用し、サイドメニューに...
追加しました。
** SiteMeshを使う [#d9bdfa80]
今回はじめて使ったSiteMeshですが、WebDB Press Vol. 18に紹...
Cart問題をヘッダ、サイドメニュー、本体の構成にしました。
今回例題に使用したワインは、ドイツのWeingut Dr. Schnellさ...
#ref(pagelayout.jpg);
*** SiteMeshの特徴 [#y16cfa18]
SiteMeshはservletのフィルターとして存在し、
複数のHTMLの内容を分解し、一つのHTMLページに再構成するツ...
これによってframeを使わなくてもサイドメニューを表示したり...
ができるようになります。
*** ライブラリーの追加 [#v1599590]
いつものように必要なjarファイルをpom.xmlに追加します。
今回必要となるのは、sitemeshとdisplaytagです。
dependecyタグは以下のようになります。
#pre{{
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>displaytag</groupId>
<artifactId>displaytag</artifactId>
<version>1.1</version>
</dependency>
}}
これらは、実行時にのみ必要となりますので、eclipseの設定フ...
*** 追加ファイル [#bdf0ec19]
sitemeshの追加で追加・変更のあるファイルは以下の通りです。
- src/main/webapp/WEB-INF/decorators/main.jsp(追加)
- src/main/webapp/WEB-INF/decorators/side.jsp(追加)
- src/main/webapp/WEB-INF/jspf/declarations.jsp(追加)
- src/main/webapp/WEB-INF/decorators.xml(追加)
- src/main/webapp/WEB-INF/web.xml(変更)
- src/main/webapp/index.jps(変更)
- src/main/webapp/menu.jps(追加)
decoratorsには、組み立て後に使用するjspファイルを保存しま...
declarations.jspは、必要なタグライブラリの宣言、文字コー...
decorators.xmlが、sitemeshのdecoratorsの設定ファイルです。
menu.jpsは、サイドメニュー用のjspファイルです。
*** web.xmlの変更について [#mdbe88cd]
sitemeshは、フィルターとして実装されていますので、web.xml...
する必要があります。
web.xmlに追加された定義は以下の通りです。
#pre{{
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.P...
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.htm</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
}}
*** decorators.xmlの設定について [#f0c97a03]
decorators.xmlでは、decoratorsディレクトリにある出力用jsp...
設定を行います。
ここでは、main.jsp, side.jpsの設定を行っています。
#pre{{
<decorators defaultdir="/WEB-INF/decorators">
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
<decorator name="side" page="side.jsp"/>
</decorators>
}}
*** declarations.jspfについて [#v280efe4]
declarations.jspfは、あまり変更することはないでしょう。
#pre{{
<%@ page language="java"
session="false"
contentType="text/html; charset=UTF-8"
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix...
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix=...
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" p...
<%@ taglib prefix="form" uri="http://www.springframework....
<%@ taglib uri="http://displaytag.sf.net" prefix="display...
}}
*** side.jspについて [#z685711e]
side.jspでは、設定されたHTML入力をそのまま出力するだけな...
以下のようになります。
#pre{{
<%@ taglib uri="http://www.opensymphony.com/sitemesh/deco...
<decorator:body/>
}}
*** main.jsp [#a00279de]
サイドにmain.jspですが、
id="side"のdivタグでサイドメニューに入力されるページを指...
メインのページを指定します。
特に、sideには、2つの入力を指定しているところに注意してく...
- /cartops/list.htm:カート内容を表示するURL
- /menu.jsp:サイドメニューを定義したjspファイル
です。このようにjspの他に別のページへのURLが指定できるこ...
#pre{{
<%@ include file="/WEB-INF/jspf/declarations.jspf" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/deco...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page...
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
<html xmlns="http://www.w3.org/1999/xhtml">
<c:url value="/images/logo.jpg" var="logoUrl"/>
<head>
<title><decorator:title default="Weingut Dr.Schnell Onl...
<link rel="StyleSheet" href="<c:url value="/css/cart.cs...
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="max-age=0"/>
<meta http-equiv="Expires" content="0"/>
<decorator:head/>
</head>
<body id="store">
<div id="banner">
<img src="${logoUrl}">
Weingut Dr.Schnell
</div>
<div id="columns">
<div id="side">
<page:applyDecorator page="/cartops/list.htm" name="s...
<page:applyDecorator page="/menu.jsp" name="side"/>
</div>
<div id="main">
<decorator:body/>
</div>
</div>
</body>
</html>
}}
*** index.jpsの変更 [#r8a6a02a]
表示をカタログファイルに変更しました。
#pre{{
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/c...
<!-- simply redirects to the main switchboard page of the...
<c:redirect url="/productops/catalog.htm"/>
}}
*** menu.jsp [#x2a8d96b]
メニューはHome以外は、ダミーのメニューとしました。
#pre{{
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>メニュー</title>
</head>
<body>
<c:url value="/index.jsp" var="indexLink"/>
<a href="${indexLink}">Home</a><br />
<a href="http://www..../faq">Questions</a><br />
<a href="http://www..../news">News</a><br />
<a href="http://www..../contact">Contact</a><br />
</body>
</html>
}}
** javaファイルの変更 [#nda7ed9e]
javaでは、CartOpsController.javaのaddの表示をカートの中身...
変更します。
#pre{{
public ModelAndView add(HttpServletRequest request, H...
Integer productId = new Integer(ServletRequestUti...
setupCartService(request);
Product product = manager.findById(productId);
LineItem item = new LineItem();
item.setProductId(productId);
item.setProduct(product);
cartService.addLineItem(item);
ModelAndView modelAndView = new ModelAndView("redire...
return modelAndView;
}
}}
たったこれだけの変更でページレイアウトを追加できるとは、...
フィルターですね。
** コメント [#z6cdda54]
この記事は、
#vote(おもしろかった[1],そうでもない[1],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc