【问题标题】:spring mvc not bind model to viewspring mvc没有绑定模型来查看
【发布时间】:2018-01-19 03:58:03
【问题描述】:

我正在探索 spring mvc,但在绑定模型以查看时遇到问题。 我的控制器:

@Controller
@RequestMapping(value = "/advertiser")

public class AdvertiserController {
    @Autowired
    private AdvertiserService advertiserService;
    @RequestMapping(value="/edit/{id}", method = RequestMethod.GET)
    public ModelAndView edit(@PathVariable long id){
            Advertiser adv=advertiserService.get(id);
            return new ModelAndView("advertiser/edit","command",adv);
    }
}

我在 /WEB-INF/advertiser 目录中也有一个 edit.jsp 文件。

我的视图解析器:

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/"
      p:suffix=".jsp" />

但是,我在转到 http://localhost:8080/springmvcdemo/advertiser/edit/1 时遇到 404 错误

错误描述:/springmvcdemo/WEB-INF/advertiser/edit/1.jsp

看起来 spring 正在尝试找到一个 1.jsp 文件来服务请求,而不是像我想要的那样使用 edit.jsp 服务。

更新:

我只是向我的控制器添加了 1 个功能,但它也不起作用:

@RequestMapping(value="/add2", method = RequestMethod.GET)
public ModelAndView add2(ModelAndView mav){


        mav.addObject("command", new Advertiser());
        mav.setViewName("advertiser/add");

        return mav;
}

问题仍然存在,描述中的 404 错误:

/springmvcdemo/WEB-INF/advertiser/add2.jsp

我已经将观点指向“广告商/添加”,但 spring 仍然试图找到 add2.jsp 而不是 add.jsp。这让我觉得我在 viewResolver 配置中失败了,但仍然不知道它是什么。

【问题讨论】:

  • 可以分享ViewResolver的配置吗?
  • 确定:

标签: java spring jsp spring-mvc


【解决方案1】:

将路径改为advertiser/edit/1如下..

@RequestMapping(value="/edit/{id}", method = RequestMethod.GET)
public ModelAndView edit(@PathVariable long id){
        Advertiser adv=advertiserService.get(id);
        return new ModelAndView("advertiser/edit","command",adv);
}

【讨论】:

  • 请求应该使用edit.jsp视图来服务。数字“1”是变量,它可以是 2,3.... 我认为我不应该将“advertiser/edit/1”之类的东西固定到视图名称中。没关系,按你说的尝试,但不会成功。
  • 我的错! advertiser 映射是如何完成的?可以分享一下完整代码吗?
  • 我只是编辑我的问题,这都是我的控制器与广告客户的映射
  • 由于您没有名为1.jsp 的文件,您只需返回edit.jsp,您应该将行更改为return new ModelAndView("advertiser/edit","command",adv);。检查更新的答案。
  • 糟糕!很抱歉,我的错,我只是在得到你的第一个答案后添加 {id} 来尝试一下。你现在的代码和我一开始的代码完全一样,而且它不起作用。
【解决方案2】:

你需要检查点。

servelt-context.xml

<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
in the /WEB-INF/views directory -->
<beans:bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

控制器

@Controller
@RequestMapping(value = "/advertiser")
public class AdvertiserController {

    @Autowired
    private AdvertiserService advertiserService;

    @RequestMapping(value="/edit/{id}", method = RequestMethod.GET)
    public ModelAndView edit(@PathVariable long id, ModelAndView mav){
         Advertiser adv = advertiserService.getAdvertiserById(id);

         mav.addObject("command", adv);
         mav.setViewName("folder/viewName");

         return mav;
    }
}

示例目录:webapp/WEB-INF/views/advertiser/edit.jsp

示例:mav.setViewName(advertiser/edit);使用 viewName。


我想改变你的代码。如果你的目录 WEB-INF/advertiser/add2.jsp

您的更新:

mav.setViewName("advertiser/**add2**");

示例代码

您在目录中有文件(WEB-INF/advertiser/add 和 add2.jsp)。

显示 add.jsp

    @RequestMapping(value="/one", method = RequestMethod.GET)
    public ModelAndView edit(ModelAndView mav){

         mav.setViewName("advertiser/add");

         return mav;
    }

显示 add2.jsp

    @RequestMapping(value="/two", method = RequestMethod.GET)
    public ModelAndView edit(ModelAndView mav){

         mav.setViewName("advertiser/add2");

         return mav;
    }

【讨论】:

  • 将 Servlet 上下文更改为
  • 我已经检查了你所说的所有要点,但没有任何效果。我将再次更新问题,以便更清楚。我想我的配置失败了,但我找不到。
  • 锁好。你可以做到的。
  • hmm.. 你可以看看我的更新。如果我将 requestmapping 设置为 add2,spring 会找到 add2.jsp。我添加了一个 add2.jsp 并显示出来。但是我真正想要的是指向 add.jsp 而不是 add2.jsp。添加视图名称:mav.setViewName("advertiser/add");没用???
  • 如果我将 requestmapping 设置为 add2,spring 会找到 add2.jsp
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 2012-10-16
  • 2013-03-30
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多