使用SpEL和eval调用控制器方法

时间:2011-03-04 10:59:47

标签: java spring jsp spring-mvc

我想知道是否可以使用JSP页面中的标记调用控制器方法,有点像在JSF中完成的方式。

我的控制器

@Controller(value="planesController")
@RequestMapping({"/planes"})
public class PlanesController {

    @Autowired
   private PlanesDAO planesDAO;

   public List<Plane> allPlanes(){

      return planesDAO.getAll();
}

我的JSP

<sf:form>
    <s:eval expression="planesController.allPlanes()" var="planes" />

    <sf:checkboxes items="${planes}" path="planes"  id="avions"/>

</sf:form>

我一直得到例外:

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'planesController' cannot be found on null

我知道我可以使用model.addAttribute,但我从几个JSP页面调用此方法,我认为其中一个标记是允许从视图中访问bean。

我正在使用Spring 3.0.5

先谢谢

1 个答案:

答案 0 :(得分:0)

让视图调用控制器代码完全错误,无论它是否有效。这是MVC倒退。

如果你编写一个服务来做你想做的事情并让你的视图访问该服务会更好,但你仍然违反了MVC。最好先在控制器中执行所有这些调用,然后将生成的模型传递给视图,而不需要任何服务调用。