[cubby-user:131] Re: Cubbyでのoptgroup

k.moriwaki [E-MAIL ADDRESS DELETED]
2009年 4月 9日 (木) 11:10:30 JST


森脇と申します。

私も以前同じ問題に悩まされたのですが、結局Cubbyのタグを使わずに
Mayaaの機能を利用して出力しました。

以下サンプルソースになります。
(エスケープ等の処理は入れていません)

// ---------- OptgroupDto
public class OptgroupDto implements Serializable {
	private static final long serialVersionUID = 1L;
	private String name;
	private Map<String, String> options = new LinkedHashMap<String, String>();
	public void addOptions(String key, String value) {
		options.put(key, value);
	}
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	public Map<String, String> getOptions() { return options; }
	public void setOptions(Map<String, String> options) { this.options = options; }
}

// ---------- OptgroupAction
public class OptgroupAction extends Action {

	public List<OptgroupDto> optgroupList;

	public ActionResult index() {
		optgroupList = new ArrayList<OptgroupDto>();

		OptgroupDto optgroup1 = new OptgroupDto();
		optgroup1.setName("Internet Explorer");
		optgroup1.addOptions("13", "Internet Explorer 3.*");
		optgroup1.addOptions("14", "Internet Explorer 4.*");
		optgroup1.addOptions("15", "Internet Explorer 5.*");
		optgroup1.addOptions("16", "Internet Explorer 6.*");
		optgroupList.add(optgroup1);

		OptgroupDto optgroup2 = new OptgroupDto();
		optgroup2.setName("Netscape Browser");
		optgroup2.addOptions("23", "Netscape Navigator 3.*");
		optgroup2.addOptions("24", "Netscape Communicator 4.*");
		optgroup2.addOptions("26", "Netscape 6.*");
		optgroupList.add(optgroup2);

		OptgroupDto optgroup3 = new OptgroupDto();
		optgroup3.setName("Other");
		optgroup3.addOptions("99", "その他");
		optgroupList.add(optgroup3);

		return new Forward("index.html");
	}
}

// ---------- index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:m="http://mayaa.seasar.org" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Optgroup Test</title>
</head>
<body>
<select id="select_browser">
	<optgroup m:id="group" label="foo">
		<option>foo1</option>
	</optgroup>
	<optgroup m:id="dummy" label="bar">
		<option>bar1</option>
	</optgroup>
	<optgroup m:id="dummy" label="baz">
		<option>baz1</option>
	</optgroup>
</select>
</body>
</html>

// ---------- index.mayaa
<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org">

	<m:forEach id="group" items="${optgroupList}" var="group" >
		<m:echo>
			<m:attribute name="label" value="${group.name}" />

			<m:forEach items="${group.options}" var="opt" >
				<m:element name="option">
					<m:attribute name="value" value="${opt.key}" />
					<m:write value="${opt.value}"/>
				</m:element>
			</m:forEach>
		</m:echo>
	</m:forEach>

    <m:null m:id="dummy" />
</m:mayaa>


2009/04/09 1:36 Takeya Otsuka <[E-MAIL ADDRESS DELETED]>:
> はじめまして。
> 大塚と申します。
>
>
> CubbyとMayaaを利用しているのですが、optgroupタグを出力する方法がわからず躓いております。
> タグリファレンスを参照してみたのですが、<t:select>では出力することはできないのでしょうか?
>
> もし出力できないのであれば、お勧めの代替手段をご教示いただけると幸いです。
>
> 以上、よろしくお願いいたします。
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user
>


cubby-user メーリングリストの案内