0

Web フォームの特定のドロップダウン リスト ボックスのすべての値を抽出したいと考えています。

この Web フォームのソース コードで、この特定のドロップ ダウンに関連するコードを以下に示します。

<div align="left"><select name="CATEGORY_ID">
<option label="[Top]" value="0" selected="selected">[Top]</option>
<option label="|___Arts &amp; Humanities" value="1">|___Arts &amp; Humanities</option>
<option label="|&nbsp;&nbsp;&nbsp;|___Art History" value="2">|&nbsp;&nbsp;&nbsp;|___Art History</option>
----many more values----
<option label="|&nbsp;&nbsp;&nbsp;|___Work" value="453">|&nbsp;&nbsp;nbsp;|___Work</option>

</select>
</div>

実際の値 (つまり option ... value="" ) と画面に表示される値 (つまり option label="" ) の両方を抽出したいのですが、これは JSP/Java で実行できますか? 理想的には、Google App Engine でサポートされているクラスのみを使用して実行できますか? (これを行う方法を提案できても、その方法が Google App Engine for Java でサポートされているかどうかわからない場合でも、その方法を親切に提案してください...)

4

2 に答える 2

0

これには HTML パーサーを使用するのが最も簡単です。GAE が同梱されているとは思いません。しかし、あなたはあなたの中にそれを落とすことができるはずです/WEB-INF/lib. この仕事のためにJsoupをつかむことをお勧めします。<select name="CATEGORY_ID">次に、サーブレットで次のように、外部 Web サイトのすべてのオプションを取得できるようにする必要があります。

Map<String, String> options = new LinkedHashMap<String, String>();
Document document = Jsoup.connect("http://other.com/some.html").get();

for (Element option : document.select("select[name=CATEGORY_ID] options")) {
    options.put(option.attr("value"), option.text());
}

request.setAttribute("options", options);
request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);

そして、JSP で次のように再表示します。

<select name="category">
    <c:forEach items="${options}" var="option">
        <option value="${option.key}"><c:out value="${option.value}" /></option>
    </c:forEach>
</select>

ちなみに、このlabel属性はばかげた MSIE 独自の属性であるため不要です。<option>可視ラベルとして表示される要素の本体です。

于 2011-08-19T23:19:40.327 に答える
0

フォームを解析することで簡単に実現できます。最も単純な形式では、java.lang.String メソッドを使用してそれを行い、「select」タグ間の部分文字列を取得してから、「option」タグ間の部分文字列を取得し、各文字列を解析して"label=" と "value=" の値を見つけます。HTML用の解析ライブラリもいくつか試すことができると思います。

于 2011-08-19T10:55:58.040 に答える