- PR -

strutsタグでのテキストの取得

1
投稿者投稿内容
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-04-05 21:15
こんにちは。

jspファイルでstrutsタグを使っているのですが、値がうまく取れません。
かなり変な使い方かもしれませんが、分かる方お願いします。

○jspファイル
<bean:define id="ulist" name="H10Form" property="userList" />
<logic:iterate id="data" name="ulist" indexId="idx">
<html:text name="data" property="item" />
.
.
</logic:iterate>

↑このテキストの内容を次のActionで取得したいのですが、できません・・。

○javaソース
TestData data = (TestData)tform.getUserList(0);

そもそもこのuserListですがList型でitemなどのdataクラスをそのまま格納しています。
表示はされるのですが、取得が出来ません。

hiddenで持つ場合も
<html:hidden property="<%=\"userList[\"+String.valueOf(idx)+\"].item\"%>"/>
と記入すれば遷移時のデータは持てるのですがテキストボックスで変わったデータを
取得できないで困っています。

どなたかよろしくお願いします。
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-04-05 23:12
こんにちは。

一応下記で変更したテキストの内容は取得できました。
<bean:define id="user" name="data" property="user" type="java.lang.String"/>
<input type="text" name="userList[0].user" value="<%=user%>">

ただ文字化けがなぜか起こってしまいます。
jspファイルはmetaタグでShift_JIS指定しているのですが、何かエンコードがかかってるんでしょうか?
みまな
会議室デビュー日: 2004/10/24
投稿数: 9
投稿日時: 2006-04-06 09:55
おはようございます。
JSPの先頭に
コード:
<%@ page contentType="text/html;charset=Shift_JIS" %>


はありますか?
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-04-06 11:43
ご回答ありがとうございます。

他のjspファイルもヘッダー部はこのように記述しています。
<%@page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html:html>
<head>
<title></title>
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
%>
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">

表示は文字化けしないのですが、次Actionで値を取得をすると全て文字化けしてしまいます。

ちなみにjavaのActionクラスはこんな感じで取得してます。
//画面情報を取得する
TestData data = (TestData)tform.getUserList(0);

アドバイスをよろしくお願いします。
みまな
会議室デビュー日: 2004/10/24
投稿数: 9
投稿日時: 2006-04-06 11:59
Filterを実装してエンコーディングフィルタを作ってみてはどうでしょうか?
http://www.hellohiro.com/filter.htm
などが参考になると思います。
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-04-06 12:35
ご回答ありがとうございます。

おっしゃるとおりフィルタをかけてみましたが、web.xmlの設定が分かりません。
紹介いただいたURLのjavaファイルを下記common.util.EncodingFilterとしてコンパイルしました。環境はstruts1.2.9,Tomcat4.1.27です。

○web.xmlはこのように追加しました。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>common.util.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>

するとこんなエラーが出てしまいました、他で探してみたら任意のフォルダだと権限が無い・・??よく分かりません・・。

2006/04/06 12:26:34 org.apache.commons.digester.Digester error
致命的: Parse Error at line 38 column 11: Element type "filter" must be declared.
org.xml.sax.SAXParseException: Element type "filter" must be declared.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

申し訳ありませんがよろしくお願いします。
ぼぼ
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-04-06 15:15
みまなさんありがとうございました。

フィルタをかけることで文字化けしなくなりました!
先程のエラーですが、TomCatでデフォルトに入ってたexampleプロジェクトのweb.xmlのヘッダー部を書き換えたら読み込んでくれました。

ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)