Struts <html:select>动态设置所选选项</html:select>

时间:2015-03-05 06:08:20

标签: jsp struct jsp-tags taglib

在下面的Struts标记代码中,我需要在呈现页面之前更改select中的选定值,具体取决于从操作传递的值。但是,我无法找到获取选项值并操纵它们的方法。

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html:form action="searchMusic" method="POST">
   <html:select property="searchType">
      <html:option value="CLASSICAL">CLASSICAL</html:option>
      <html:option value="ROCK">ROCK</html:option>
   </html:select>
   <html:submit value="Search"/>
</html:form>

我尝试了以下功能,但它无效。

$(document).ready(function() {

    var viewRockOrClassical = '${viewRockOrClassical}';
    if (!isEmpty(viewRockOrClassical)) {
        var searchBy = document.getElementByName("searchType");
        if (viewRockOrClassical == "ROCK") {
            searchBy.value = "ROCK";
        }

    }

});

function isEmpty(str) {
    return (!str || 0 === str.length);
}

错误我正在加载页面

  

未捕获的TypeError:undefined不是函数

这是由行&#34; document.getElementByName(&#34; searchType&#34;)&#34;。

引起的。

3 个答案:

答案 0 :(得分:2)

在操作类中设置属性值,因为您具有操作本身的值。

formObject.searchType = value;

因此它将在页面加载时显示所选值。

答案 1 :(得分:0)

将select标记设为id =“selectbox”,然后尝试:

 var viewRockOrClassical = '${viewRockOrClassical}';
        if (!isEmpty(viewRockOrClassical)) {
            var searchBy = document.getElementByID("searchType").options;
            for(int i=0;i<searchBy.length;i++) {
                if (viewRockOrClassical == "ROCK") {
                    searchBy[i].value = "ROCK";
                }
            }   
        }

答案 2 :(得分:0)

动态设置Struts表单中的值。我们可以直接将值设置为关联的Struts操作表单,然后转发到包含表单的JSP页面。

public ActionForward selectMusic(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    Object requestForMusicType = request.getParameter("requestForMusicType");

    if (requestForMusicType != null && "forRockMusic".equalsIgnoreCase((String) requestForMusicType)) {
        MusicTypeSearchForm musicTypeSearchForm = new MusicTypeSearchForm();
        musicTypeSearchForm.setSearchType("ROCK");
        request.setAttribute("musicTypeSearchForm", musicTypeSearchForm);
    }

    return mapping.findForward("searchForMusic");
}