Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Seasar2においてjspのHIDDENの中身をJavaで取得

はじめて投稿します。

現在Seasar2とJqueryを使用してJspに書いたHIDDEN属性
の値をJava側に渡そうとしています。
しかし、submitしているにもかかわらず、HIDDENにセッ
トした内容がActionメソッドでわたっていません。
Formにわたっていないのです。
IEでは渡されなくて、Google Chromeでは値が渡されま
す。
どうしてでしょうか?
やり方としては以下の通りです。
JSPの中身(HTML)
***************************************************
<s:form onkeypress="return formKeyPress(event);" 
enctype="multipart/form-data" >
    <dl class="comp">
    <dt class="title">立会費用確認</dt>
        <dd class="items">
        <table class="dtable">

            <tr class="tr">

                <td >
                    <input type="button" 
name="doUpdate" id="doUpdate" class="btn_input " 
value="登録" style="" />
                    <html:hidden property="id" 
write="false"/>
                    <html:hidden property="seqno" 
write="false"/>
                </td>
            </tr>

        </table>
        </dd>
    </dl>
</s:form>
***************************************************

JSPの中身(Javascript)
***************************************************
    $("#doUpdate").click(function(){
        doFunc();
    });

function doFunc() {
    $("input[name^='id']:hidden").val("11");
    $("input[name^='seqno']:hidden").val("22");
    $("form").attr("action", 
"/SysId/doUpdate");
    $("form").submit();
}

***************************************************

Java(Action)の中身
***************************************************
public class SysIdAction extends BaseAction {

@Execute(input = "list.jsp")
public String doUpdate() {
        
    String strpc = form.id;
    String strpc = form.seqno; ←値が入ってい
ない
    return "";

}
***************************************************

Java(Form)の中身
***************************************************
@Component(instance = InstanceType.SESSION)
public class SysIdForm extends BaseForm {
    public String id;
    public String seqno;

    /**
     * リセットメソッド
     */
    @Override
    public void reset() {
        super.reset();
    }
}


***************************************************


なにとぞご教授のほど、よろしくお願いします。

7

回答

92595

閲覧

7件の回答

評価

0

追記です。

Actionメソッドの中でform.id、form.seqnoの中身はnullで
した。

よろしくお願いします。

評価

0

idって属性があるんだから、使わないほうがいいと思うけどなー。
こういうのは、生成されたHTMLを見ておかしなところがないか、ま
ず確認しないとな。
ブラウザにとっては、所詮はただのHTML。

評価

0

$さん
はじめまして。返信ありがとうございます。

今回投稿の問題点はわかりました。
formの属性で「enctype="multipart/form-data" 」を使
用するとHIDDEN項目の値がわたらないようです。
そこで、formを分割したいのですが、s:formの中に
s:formを作ろうとすると以下のようなエラーが発生しま
す。
java.lang.RuntimeException: 
org.apache.jasper.JasperException: An exception 
occurred processing JSP page /WEB-SisId/list.jsp at 
line 1002
なにか解決策はありますでしょうか?

form.idに関しましては実際はidというHIDDENを使ってい
るわけではなく、form.XXXid(XXXは任意)として使って
いますので、この問題ではないような気がします。

評価

0

JavaScriptに原因がありそうに1票

HTTPリクエストにパラメータが含まれていないのでは。
フレームワークに関係なく
HttpServletRequest.getParameter()で値が取れています
か?
リクエストを送るHTMLは変えずに、受け側を簡単なServlet
を組んで試してみたらどうでしょうか。

評価

0

Aさん
はじめまして。

request.getParameter("XXXid")で取得しようとしたところ
nullが入っていました。
formを分割してみたところ「enctype="multipart/form-
data" 」のないformのHIDDENの値は取得できました。
なにか解決方法はあるでしょうか?

よろしくお願いします。

評価

0

追記です。

<html:file >
を削除してみたところその<html:fie>のあったformの項
目の値をすべて取得できました。
<html:file>があるとそのformの項目の値がすべて取得で
きません。
<html:file>は以下の通りに書きました。

<html:file property="inputfile" errorStyleClass=" 
onError"  styleClass="" style="" />

なにが原因かわかる人いますでしょうか?
よろしくお願いします。

評価

0

multipartでしたか。
よく読まず適当なことを書いてすみません。

ということは、利用方法なのか実装なのか分かりません
が、フレームワーク側のマルチパートデータの解析部分に
原因がありそうですね・・・。
ブラウザによる挙動の違いはマルチパートデータ内のパラ
メータ順に起因するのかもしれません。

Seasar2は使用したことが無いので、余りお力になれずす
みません。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。