JSP链接到控制器映射,返回映射到jsp文件但浏览器无法显示

时间:2017-11-18 21:34:21

标签: jsp jstl

我有一个链接

<a href="<c:url value="localhost:8080/CustomerRelationshipManagement/configureUpdate?
                            firstName=${temp.firstName}&lastName=${temp.lastName}&email=${temp.email}"/>">Update</a>

指向spring mvc mapping

@RequestMapping(value="configureUpdate", method = RequestMethod.GET)
public String configureUpdate(@RequestParam("firstName") String firstName, 
        @RequestParam("lastName") String lastName,  @RequestParam("email") String email, 
        Model model)
{

    Customer customer = new Customer(firstName, lastName, email);

    model.addAttribute("customer", customer);

    return "update-customer";
}

因此,eclipse中的浏览器只显示

  

无法显示网页

我试图解决这个问题,但是在处理完成后,我们还没有发现浏览器继续下一个JSP页面的任何方法。

1 个答案:

答案 0 :(得分:6)

  

无法显示网页

这是典型的Internet Explorer错误消息,当浏览器无法首先到达目标时,将显示该错误消息。例如,由于URL语法损坏。

如果您检查过生成的JSP页面的HTML输出,您会注意到它生成了以下HTML代码:

<a href="localhost:8080/CustomerRelationshipManagement/configureUpdate?
                        firstName=&lastName=&email=">Update</a>

它不是以方案或/开头,因此它与当前网址相关。想象一下,当前网址为http://localhost:8080/CustomerRelationshipManagement/some.jsp,然后目标网址将变为http://localhost:8080/CustomerRelationshipManagement/localhost:8080/CustomerRelationshipManagement/configureUpdate?firstName=&lastName=&email=

这当然无效。目标网址应为http://localhost:8080/CustomerRelationshipManagement/configureUpdate?firstName=&lastName=&email=

换句话说,生成的HTML输出应该如下所示:

<a href="http://localhost:8080/CustomerRelationshipManagement/configureUpdate?
                        firstName=&lastName=&email=">Update</a>

或域相关:

<a href="/CustomerRelationshipManagement/configureUpdate?
                        firstName=&lastName=&email=">Update</a>

或者当前页面当前位于/CustomerRelationshipManagement文件夹中:

<a href="configureUpdate?firstName=&lastName=&email=">Update</a>

您需要相应地调整JSP代码,使其生成所需的HTML代码。如果JSP页面由与目标URL完全相同的Web应用程序提供,并且您希望继续使用<c:url>标记,那么它应如下所示:

<c:url var="configureUpdateURL" value="/configureUpdate">
    <c:param name="firstName" value="${temp.firstName}" />
    <c:param name="lastName" value="${temp.lastName}" />
    <c:param name="email" value="${temp.email}" />
</c:url>

<a href="${configureUpdateURL}">Update</a>

它将生成一个域相对URL。