在下面的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;。
引起的。答案 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");
}