通过 Header.jsp 重定向到页面

问题描述 投票:0回答:1

我正在尝试弄清楚如何从 JavaScript 函数重定向回我的搜索结果:在给定搜索结果显示的 JSP 标题上,有一个“返回结果列表”链接,单击该链接即可返回到搜索结果。自从更改为

ModelAndView
控制器格式后,此“返回”链接似乎不再起作用,现在仅返回一个空白白页。我已经尝试修补底层控制器并通过其中的一些进行调试,但我不太确定为什么它是空白的。我想我在这里误解了一些东西,但我不确定是什么。

searchResultHeading.jsp 是其中包含包含相关链接的标头的 jsp

        <%if(ApplicationBean.getBizActivityAuthorizations().ResultBasicInfo() && !ApplicationBean.isInExternalAppContext()) { %>
            &nbsp;| <a href="javaScript:returnToResultList();" class=sm>Return to Result list</a>
        <% } %>     
        </td>
    </tr>

Header.jsp 是另一个 jsp,包含大量常见的内容和函数。

returnToResultList
功能就在里面

function returnToResultList()
{
    <%if(ApplicationBean.isSearchResultsAvailable()){
    %>
        gotoSearchResults(document.userSelection);
    <%
    }else if(ApplicationBean.isMarketingListAvailable()){
    %>
        gotoListParticipants();
    <%
    }%> 
}
function gotoSearchResults(searchForm)
{
    searchForm.userAction.value = "<%=myLiterals.USER_ACTION_RETURN_TO_SEARCH_RESULTS_PAGE%>";
    searchForm.action="/mySite/GlobalNavigationController";
    searchForm.submit();
    return true;
}

GlobalNavigationController.java 本身位于下面,我可以在其中重定向到显示其 JSP 的各种控制器。

@Controller
public class GlobalNavigationController {

@Autowired
private CustomerListController customerListController;

@RequestMapping(path="/GlobalNavigationController", method={RequestMethod.GET, RequestMethod.POST})
   public ModelAndView doGet(HttpSession session, HttpServletRequest req, HttpServletResponse res) throws Exception
    {
        SiteBean myBean = new myBean();
        try
        {
            RequestMapper.MapToBean(req,myBean);
            if (myBean.getUserAction().equals(myLiterals.USER_ACTION_1))
            {
                return null;
            }
            else if(myBean.getUserAction().equals(myLiterals.USER_ACTION_2))
            {
                GlobalNavigationUCService.processSideNav();
                GlobalNavigationUCService.resetDisPlayOrder();
                return maintainController.doGet(session, req, res);
            }
            else if (myBean.getUserAction().equals(myLiterals.USER_ACTION_3))
            {
                GlobalNavigationUCService.processSideNavInitiateSearch();
                GlobalNavigationUCService.resetDisPlayOrder();
                return SearchController.doGet(session, req, res);
            }
            else if(myBean.getUserAction().equalsIgnoreCase(myLiteral.USER_ACTION_4))
            {
                GlobalNavigationUCService.processSideNavInitiateSearch();
                GlobalNavigationUCService.processTabsGoToResults();
                GlobalNavigationUCService.resetDisPlayOrder();
                return ProfileController.doGet(session,req,res);
            }
            else if (myBean.getUserAction().equals(myLiterals.USER_ACTION_RETURN_TO_SEARCH_RESULTS_PAGE))
            {
                GlobalNavigationUCService.processTabsGoToResults();
                return customerListController.doGet(session, req, res);
            }

编辑:

查看 F12 网络详细信息后,我发现 GlobalNav 的有效负载没有传递由 JavaScript 定义的新 userAction。但我在函数中定义了新的 UserAction。也许我设置模型和视图结构的方式没有继续下去?

Snip from Console

spring spring-mvc
1个回答
0
投票

我弄清楚发生了什么:

当迁移到 Spring MVC 结构时,由于原始功能已被弃用,因此该 userAction 被认为已被弃用。结果是重定向返回 null。

为了解决我的问题,我刚刚实现了对

CustomerListController
的调用并引用了正确的
GlobalNavigationUCService
方法

@Controller
public class GlobalNavigationController {

@Autowired
private CustomerListController customerListController;

@RequestMapping(path="/GlobalNavigationController", method={RequestMethod.GET, RequestMethod.POST})
   public ModelAndView doGet(HttpSession session, HttpServletRequest req, HttpServletResponse res) throws Exception
    {
        SiteBean myBean = new myBean();
        try
        {
            RequestMapper.MapToBean(req,myBean);
            if (myBean.getUserAction().equals(myLiterals.USER_ACTION_1))
            {
                return null;
            }
            else if(myBean.getUserAction().equals(myLiterals.USER_ACTION_REVIEW_MARKETING_LIST_PARTICIPANTS))
            {
                GlobalNavigationUCService.processTabsGoToSearch();
                if(applicationServlet.getUserContext(req).getSearchResults() == null) {
                    GlobalNavigationUCService.resetCustomerDetailsInUserContext();
                }
                return customerListController.doGet(session, req, res);
            }
© www.soinside.com 2019 - 2024. All rights reserved.