[Seasar-user:3500] Re: 自作のページャーを動作させたい
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2006年 4月 14日 (金) 19:41:18 JST
関です。
自作ページャーのサンプルを引き続き作成しております。
> > 参考になるかどうか分かりませんが、以下の私のブログを見てみてください。
> > http://d.hatena.ne.jp/mattena31/20050819
同じような事をしていらっしゃる方が他にもおられました。
http://d.hatena.ne.jp/uchd/20060320/1142844703
これらのソースを参考にサンプルを修正したのですが、
いまだに動作しない状態です。
「検索画面」→「結果画面」→「ページャーをクリックしての結果画面」
と言う流れの中で、ページャーをクリックしての結果画面に行くときに
ConditionDtoに検索条件が設定されません。
詳細:
「結果画面」→「ページャーをクリックしての結果画面」の際、
「結果画面」のm:actionに「m:action="#{employeeAction.view}」と記述してあるので
EmployeeActionImplのviewメソッドを実行する前の
setEmployeeConditionDtoメソッドは実行されます。
しかし、渡される引数のオブジェクトは、html側で「m:inject="f:param"」として
設定した「EmployeeConditionDto」に値が入っていません。
検索画面で設定した日付2個と、Limit、Offsetは結果画面では反映されています。
JSPは触った事が無く、仕事も手が離せない状態ですのでまったりとやっております。
何か一言ヒントだけでもいただければと思いメールをお送りさせていただきました。
よろしくお願いいたします。
以下、関係のありそうなソースを載せておきます。
==============================
EmployeeActionImpl.java
==============================
package jsf.action.impl;
import java.util.ArrayList;
import java.util.List;
import org.seasar.dao.pager.PagerViewHelper;
import jsf.action.EmployeeAction;
import jsf.dto.EmployeeConditionDto;
import jsf.dto.EmployeeListDto;
import jsf.dto.PageDto;
import jsf.entity.Employee;
import jsf.logic.EmployeeLogic;
public class EmployeeActionImpl implements EmployeeAction {
private EmployeeConditionDto employeeConditionDto;
private EmployeeListDto employeeListDto;
private EmployeeLogic employeeLogic;
private PagerViewHelper pagerViewHelper;
private List pageList; // ページャーのリスト
public EmployeeActionImpl() {
}
public String view() throws Exception {
employeeListDto = employeeLogic.getEmployeeListDto(employeeConditionDto);
pagerViewHelper = new PagerViewHelper(employeeConditionDto);
pageList = new ArrayList();
for (int i = 0; i <= pagerViewHelper.getLastPageIndex(); i++) {
PageDto page = new PageDto();
page.setNo(i+1);
page.setOffset(i*pagerViewHelper.getLimit());
pageList.add(page);
}
return "test-result";
}
public String select() {
System.out.println("select");
return null;
}
public EmployeeConditionDto getEmployeeConditionDto() {
return employeeConditionDto;
}
public void setEmployeeConditionDto(EmployeeConditionDto employeeConditionDto) {
this.employeeConditionDto = employeeConditionDto;
}
public EmployeeListDto getEmployeeListDto() {
return employeeListDto;
}
public List getPageList() {
return pageList;
}
public void setPageList(List pageList) {
this.pageList = pageList;
}
public PagerViewHelper getPagerViewHelper() {
return pagerViewHelper;
}
public void setPagerViewHelper(PagerViewHelper pagerViewHelper) {
this.pagerViewHelper = pagerViewHelper;
}
public void setEmployeeListDto(EmployeeListDto employeeListDto) {
this.employeeListDto = employeeListDto;
}
public EmployeeLogic getEmployeeLogic() {
return employeeLogic;
}
public void setEmployeeLogic(EmployeeLogic employeeLogic) {
this.employeeLogic = employeeLogic;
}
}
==============================
test-result.html
==============================
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>結果画面</title>
</head>
<body>
<span m:inject="f:param" m:name="layoutTitle" m:value="結果画面"/>
<span m:inject="s:insert" m:name="content">
<form>
該当件数:<span m:value="#{pagerViewHelper.count}"/>件
<hr/>
<div>
【Pager:
<span m:inject="s:forEach" m:items="#{pageList}" m:var="e" m:varIndex="i">
<span m:rendered="#{i == pagerViewHelper.pageIndex}">
[<span m:value="#{i+1}">#</span>]
</span>
<span m:rendered="#{i != pagerViewHelper.pageIndex}">
<a href="#" m:action="#{employeeAction.view}">
<span m:value="#{i+1}">#</span>
<span m:inject="f:param" m:name="startDate" m:value="#{employeeConditionDto.startDate}"/>
<span m:inject="f:param" m:name="endDate" m:value="#{employeeConditionDto.endDate}"/>
<span m:inject="f:param" m:name="limit" m:value="#{employeeConditionDto.limit}"/>
<span m:inject="f:param" m:name="offset" m:value="#{employeeConditionDto.offset * i}"/>
</a>
</span>
</span>
】
</div>
<table border="1">
<tr>
<th>コード</th>
<th>氏名</th>
<th>アクション</th>
</tr>
<span m:inject="s:forEach" m:items="#{employeeListDto}" m:var="e" m:varIndex="i">
<tr>
<td><span m:value="#{e.Employee_Code}">0000</span></td>
<td><span m:value="#{e.Employee_Name}">シーサー太郎</span></td>
<td>[<a m:action="#{employeeAction.select}">action</a>]</td>
</tr>
</span>
</table>
<hr/>
</form>
</span>
</body>
</html>
==============================
test-input.html
==============================
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>検索画面</title>
</head>
<body>
<span m:inject="f:param" m:name="layoutTitle" m:value="検索画面"/>
<span m:inject="s:insert" m:name="content">
<form>
<table>
<tr>
<td>
開始日:<input
type="text"
m:value="#{employeeConditionDto.startDate}"
id="startDate"
value="startDate"/>
</td>
</tr>
<tr>
<td>
終了日:<input type="text"
m:value="#{employeeConditionDto.endDate}"
id="endDate"
value="endDate"/>
</td>
</tr>
<tr>
<td>
Limit:<input type="text"
m:value="#{employeeConditionDto.limit}"
id="limit"
value="limit"/>
</td>
</tr>
<tr>
<td>
Offset:<input type="text"
m:value="#{employeeConditionDto.offset}"
id="offset"
value="offset"/>
</td>
</tr>
<tr>
<td>
<input type="button"
value="閲覧"
m:action="#{employeeAction.view}" />
</td>
</tr>
</table>
</form>
</span>
</body>
</html>
==============================
app.dicon
==============================
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
<include path="jsf.dicon"/>
<include path="dao.dicon"/>
<include path="jsf/dicon/allaop.dicon"/>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property name="instanceDef">
@[E-MAIL ADDRESS DELETED]
</property>
<initMethod name="addClassPattern">
<arg>"jsf.action.impl"</arg>
<arg>".*ActionImpl"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister"
>
<property name="interceptor">actionInterceptorChain</property>
<initMethod name="addClassPattern">
<arg>"jsf.action.impl"</arg>
<arg>".*ActionImpl"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
>
<property name="instanceDef">
@[E-MAIL ADDRESS DELETED]
</property>
<initMethod name="addClassPattern">
<arg>"jsf.dto"</arg>
<arg>".*Dto"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
>
<initMethod name="addClassPattern">
<arg>"jsf.logic.impl"</arg>
<arg>".*LogicImpl"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister"
>
<property name="interceptor">logicInterceptorChain</property>
<initMethod name="addClassPattern">
<arg>"jsf.logic.impl"</arg>
<arg>".*LogicImpl"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
>
<initMethod name="addClassPattern">
<arg>"jsf.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister"
>
<property name="interceptor">daoInterceptorChain</property>
<initMethod name="addClassPattern">
<arg>"jsf.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
</components>
==============================
allaop.dicon
==============================
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<include path="aop.dicon"/>
<include path="dao.dicon"/>
<include path="j2ee.dicon"/>
<component
name="actionThrowsInterceptor"
class="jsf.interceptor.ActionThrowsInterceptor"
/>
<component
name="actionInterceptorChain"
class="org.seasar.framework.aop.interceptors.InterceptorChain"
>
<initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod>
<initMethod name="add"><arg>actionThrowsInterceptor</arg></initMethod>
</component>
<component
name="logicInterceptorChain"
class="org.seasar.framework.aop.interceptors.InterceptorChain"
>
<initMethod name="add"><arg>aop.traceThrowsInterceptor</arg></initMethod>
<initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod>
<initMethod name="add"><arg>j2ee.requiredTx</arg></initMethod>
</component>
<component
name="daoInterceptorChain"
class="org.seasar.framework.aop.interceptors.InterceptorChain">
<initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod>
<initMethod name="add"><arg>dao.interceptor</arg></initMethod>
</component>
</components>
Seasar-user メーリングリストの案内