在Hybris中重定向到不同页面的正确方法是什么?我一直采用以下方法:
<a href="<c:url value="/path" />">link</a>
但有些人强调最好使用单独的方法重定向并使用重定向:
正确的方法是什么?
答案 0 :(得分:3)
首先让我告诉您重定向与转发之间的基本区别。
重定向:服务器将一个标头(作为响应)发送回包含重定向网址的浏览器/客户端,然后浏览器启动一个新的重定向网址请求。
我们何时可以使用重定向?
通常,当数据发布到服务器时,我们应该重定向到get方法(URL)以防止刷新浏览器上的数据重新提交(F5)。
return "redirect:/redirectToGeturl";
转发:在服务器中,控件可以转发到目标资源(URL)。这是由容器内部完成的,因此浏览器/客户端不知道它。
我们什么时候可以使用前进?
有时,我们希望在不更改原始URL的情况下显示不同的页面/资源,然后我们在内部将请求转发给其他控制器。
return "forward:/404";
在Hybris中重定向到不同页面的正确方法是什么?
public static final String REDIRECT_PREFIX = "redirect:";
public static final String FORWARD_PREFIX = "forward:";
此类级别常量在AbstractController中定义。您可以通过将控制器扩展到AbstractPageController或AbstractController来使用它。
return REDIRECT_PREFIX + "/redirecturl";
return FORWARD_PREFIX + "/404";
&LT; a href =“&lt; c:url value =”/ path“/&gt;”&gt; link&lt; / a&gt;
这是在客户端/浏览器端声明链接的正确方法,一旦用户点击它就会向/path
发送GET请求。