2011-08-19 81 views
0

我想提取Web表单中特定下拉列表框的所有值。如何使用java/jsp从Web表单中的特定下拉框中提取值的列表

在此Web表单的源代码,为这个特别的下拉相关的代码,被赋予below--

<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> 

我想提取两者的实际值(即选项...值= “”)以及屏幕上显示的值(即选项标签=“”)...这可以在JSP/Java中完成吗?最理想的做法是只使用Google App Engine支持的类。 (即使你可以建议一种方法来做到这一点,但不确定Google App Engine for Java是否支持这种方式,即使那么也建议你的方法...)

+1

我不明白_why_你想提取标签。它的价值在于识别后端的标签。如果你转移标签以及你不能确定用户没有动态修改它.​​.. – home

+0

我想创建一个应用程序,自动将数据提交到远程Web窗体...为此目的我已经收集了关于这些表单的数据,包括各个字段的名称以及每个字段的最大/最小大小......对于多选字段,我计划根据站点动态检索所有值(紧接在我打开表单向该站点提交数据之前) ...该网站不是我的,它是第三方网站...这就是为什么我想获得标签以及价值。不同的网站可能有不同的标签/价值组合...因此,需要提取都... – user893664

+0

谢谢,只是感兴趣。我不知道GAE是否支持这一点,我只知道JavaScript做类似的事情,例如在提交之前动态地将所需的字段添加到表单... – home

回答

0

最简单的就是为此使用HTML解析器。我认为GAE没有任何一款。但是你应该可以在你的/WEB-INF/lib中放一个。我建议为此工作抢Jsoup。然后,您应该能够获得外部网站的<select name="CATEGORY_ID">的所有选项作为一个servlet如下:

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>元素的主体。

0

你可以通过解析表单,最简单的形式是你可以用java.lang.String方法做到这一点,在“select”标签之间获取子串,然后获得“option”标签之间的子串,然后解析每个字符串以找到“label =”和“值=”。我想你也可以尝试一些解析库的HTML。

相关问题