電子書籍の厳選無料作品が豊富!

html:optionsを使用して、コンボボックスを作成しようと思っていますが、
初期状態である値を選択したいと思っているのですが、どうやったらいいか分かりません。

色々調べてみても、答えらしきものが見つかりませんでした。

よろしくお願いします。

A 回答 (3件)

>request.setAttribute("optionsYear",[表示させたい値以外のそのほかの値の配列変数]);


表示させたい値を配列に含めないといけないのではないですか?
そうしないとoptionとして出力されませんよね。

struts1.3.10をダウンロードして動かしてみたところ、初期選択することができました。
ブランクプロジェクトをちょこっと変更しただけなのでbrave9977さんの画面遷移とは違うと思いますが、
<html:select>と<html:options>の動きに影響はないはずなので。
ちょっと長くなりますが下記にソースを記載します。

--A.java--
public class A extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
B b = (B)form;
b.yearValue = "2010";
request.setAttribute("optionsYear", new String[]{"2008","2009","2010","2011"});
return mapping.findForward("hoge");
}
}
--B.java--
public class B extends ActionForm {
public String yearValue;
public String getYearValue() {
return yearValue;
}
public void setYearValue(String yearValue) {
this.yearValue = yearValue;
}
}
--Welcome.jsp--
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:html>
<head>
<html:base/>
</head>
<body bgcolor="white">
<html:select name="BeanName" property="yearValue" >
<html:options name="optionsYear" labelName="optionsYear"/>
</html:select>
</body>
</html:html>

--struts-config.xml--
<form-beans>
<form-bean name="BeanName" type="test.B" />
</form-beans>

<action-mappings>
<action
path="/Welcome"
type="test.A"
name="BeanName">
<forward name="hoge" path="/pages/Welcome.jsp"></forward>
</action>
</action-mappings>

--表示時のHTMLソース--
<html>
<head>
<base href="http://localhost:8083/struts-blank-1.3.10/pages/ …
</head>
<body bgcolor="white">
<select name="yearValue"><option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010" selected="selected">2010</option>
<option value="2011">2011</option></select>
</body>
</html>

A.javaの
b.yearValue = "2010";

b.yearValue = "2009";
とした場合には、ちゃんと2009が選択された状態で表示されました。
    • good
    • 0
この回答へのお礼

お礼できずにすみませんでした。
どうやら、根本的な勘違いをしていたみたいです。

ありがとうございました。

お礼日時:2011/01/04 14:18

<html:options>に該当するvalueを持った選択肢が存在しないのではないですか?


HTMLのソースで確認してみてください。
strutsを動かせる環境が手元にないので確認できないのですが、
この記述だと各optionのvalueが空になってたりしませんか。

また、質問の際にはJDKやOSなどの環境を具体的に書いた方がいいですよ。
strutsもバージョンによって記述内容が違いますから。

参考URL:http://struts.wasureppoi.com/taglib/02_select_li …
    • good
    • 0
この回答へのお礼

ありがとうございます。

環境は
JDK:Version 6 Update 22
OS:WindowsXP
Struts:1.3.10

です。


実行結果なのですが、

<select name="yearValue">
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>

となっています。
この時は「2010」を選択しているので、
optionsにはあるはずです。

下記のPGに間違いは、なかったのでしょうか?

お礼日時:2010/11/30 18:25

初期選択する値を、


<html:select>タグのvalue属性か、
ActionFormBeanの該当プロパティに設定すればいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>ActionFormBeanの該当プロパティに設定すれば・・・

を、試してみたのですが、表示されませんでした。

一部抜粋してみたので、何か間違っているところがあれば、
ご指摘ください。
よろしくお願いいたします。


【A.java】※Actionクラス

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception{

B beanForm = (B)form;

beanForm.yearValue = "表示させたい値";

request.setAttribute("optionsYear",[表示させたい値以外のそのほかの値の配列変数]);

return mapping.findForward("succsess");
}

【B.java】※beanクラス
public class B extends ActionForm{

public String yearValue;

/**
* @return yearValue
*/
public String getYearValue() {
return yearValue;
}
/**
* @param yearValue セットする yearValue
*/
public void setYearValue(String yearValue) {
this.yearValue = yearValue;
}
}


【A.jsp】

<html:select property="yearValue" >
<html:options name="optionsYear" labelName="optionsYear"/>
</html:select>


【struts-config.xml】
<form-beans>
<form-bean name="BeanName" type="jp.co.XXXX.XXXX.XXXXX.B" />
<form-beans/>

<action
attribute="BeanName"
input="/pages/Z.jsp"
name="BeanName"
path="/action"
type="jp.co.XXXX.XXXX.XXXXX.A"
scope="request"
validate="false">
<forward name="succsess" path="/XXXXXX/XXXXXX/A.jsp" />
</action>

お礼日時:2010/11/30 10:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!