jsp jump url parameters'的名字是html元素的名字

时间:2017-04-19 11:41:12

标签: javascript html jsp

我写了web首页page.jsp:

<select id="type_label" name="type_label">
    <option value=""></option>
    <c:forEach items="${types}" var="type" varStatus="status">
        <option value="${type}">${type}</option>
    </c:forEach>
</select>


function dosearch(){
    var type_label = document.getElementById("type_label");
    var tagVal = type_label.options[type_label.selectedIndex].value;
    window.location="${ctx}/content/query?tag="+tagVal;
}

在控制器Controller.java中: 我获取了mysql的数据行,并将这些数据行放在List列表中。 然后将列表放在模型中: model.add(“list”,list); 该列表在我的日志中包含数据行。

然后控制器使页面跳转到page.jsp。 该项目使用了rose java web frame。

返回“内容/页面”; 它使页面跳转到page.jsp。

但网址是: http://127.0.0.1:3428/web/content/page?type_label=%E6%90%9E%E7%AC%91&currentPage= 该网址预计将是: http://127.0.0.1:3428/web/content/page?tag=%E6%90%9E%E7%AC%91&currentPage=

url的参数是type_label而不是tag。 但是type_label是选择html元素的id。

为什么?请帮我一把。非常感谢!

1 个答案:

答案 0 :(得分:0)

我知道它的原因。 在dosearch()执行之后,从mysql获取标记列表。 然后通过

跳转到content / page.jsp
return "content/page";

页面将按以下格式加载:

<form action="${ctx}/content/page" method="get" name="Form" id="Form"
class="form-horizontal">

它将再次从mysql获取数据列表。 因为它通过标签元素的名称“type_label”获得了tag参数。 然后它的url是“..type_label = tagname”。控制器的方法没有从“type_label”获取tag参数。所以它现在没有标签参数。 它将获得没有标记的数据列表。 所以数据列表不是这个标签的数据。

解决方案: HTML中的标记元素是:

<select id="tag" name="tag">
    <option value=""></option>
    <c:forEach items="${tag}" var="tag" varStatus="status">
        <option value="${tag}">${tag}</option>
    </c:forEach>
</select>

将dosearch()方法修改为:

function dosearch(){
    $("#form").submit();
}

修改控制器代码以获取标记参数。像那样:

@Get("page")
public String page(Model model, @Param("tag") String tag){
...
}

控制器将通过标签元素的名称“tag”获取标签参数。 执行dosearch()后,控制器将从表单中获取tag参数。 然后在控制器中获取此标记的数据列表。并将列表添加到模型中。 最后,该页面将显示标签列表。