- PR -

struts1のhtml:submitタグ

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-01 21:41
こんにちは。

struts1.2
JDK1.5
で開発してます。

●JSP
<html:form action="/test" enctype="multipart/form-data" method="POST">
<td>
File:<html:file property="fileUp" />
<html:submit property="submit" onclick="return confirm('アップロードします。よろしいですか?');" value="Upload" />
</td>
</html:form>

●Java
public class UploadAction extends BaseAction {

public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

ActionForm aform = (ActionForm)form;

FormFile fl = aform.getFileUp();
...
}
}
(他ソースは省略します)


この様なソースでアップロード処理部は記述しておりませんが、バイナリでアップロードは成功しております。
ただ、今悩んでいるのが、<html:submit>の挙動なのですが、この部分を画像に置き換えた場合(<a href..>)、<html:file>を読み取れなくなってしまいます。

<html:form>内は変わらず、他も何一つ変えていないのですが、全く空で画面上はデータが確かに入力されているのですが、何故でしょうか?

お分かりになる方ございましたら、よろしくお願いします。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-01 22:51
追記です。

試したパターンはこの2種類です。いずれもJSPのhtml:submit部を変えただけです。
@
<script type="text/javascript">
<!--
function test(idx){
document.forms[0].key.value = idx;
document.forms[0].target = "_self";
document.forms[0].action = "test.do";
document.forms[0].submit();
}
//-->
</script>
...
<a href="javascript:test('1');"><IMG src="images/test.gif"></a>

A
<A href="test.do" target="_top"><IMG src="images/test.gif"></A>


結果:
@はスクリプトエラー
Aはデータが空(ActionFormの内容自体受け渡っていない感じです。全てnull)

よろしくお願いします。
マリン
常連さん
会議室デビュー日: 2006/05/28
投稿数: 41
投稿日時: 2008-07-02 02:00
1はスクリプトエラーの詳細が記載されていないのでわかりません。
2の方は単なるリンクであり、HTTPメソッド的にPOSTではなくGETになってしまいますからアップロードできないと思います。
アップロード用ボタンを画像にしたいのであればhtml:submitのかわりにhtml:imageを使えばいいのではないでしょうか?

それと余談ですが丸数字は機種依存文字ですのでWeb開発者としては使わない方がよいかと…
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-02 06:51
マリンさん、ありがとうございます。

おっしゃるように、html:imageタグにてやってみました。
<html:image src="images/pppp.gif" property="" onclick="test('1');" alt="てすと" />

何の問題も無く動きました、ありがとうございます。
width・heightなどは、無いみたいですね、APIを見る限り・・。
マリン
常連さん
会議室デビュー日: 2006/05/28
投稿数: 41
投稿日時: 2008-07-02 10:44
引用:

未記入さんの書き込み (2008-07-02 06:51) より:

width・heightなどは、無いみたいですね、APIを見る限り・・。



style="width:xx;height:xx"で指定すればとりあえずサイズの指定ができるかと思います。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-02 13:12
マリンさん、ありがとうございます。
おっしゃる通りですね。
ありがとうございます。
1

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