我知道JSP已被弃用。
Here,提到
在JSP中,$ {}在不存在时不会自动创建托管bean 范围。因此,如果您可以保证#{}开启,则只能使用它 在之前的某个地方使用过相同的托管bean 组件树,还可以查看构建时间与视图渲染时间 生命周期考虑在内。
为了检查它的真实与否,我想出了这个:
像这样的简单JSP页面,
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
</head>
<body>
${myPlayersBean.playerName}
Here
</body>
</html>
,其中
@ManagedBean(name = "myPlayersBean")
@RequestScoped
public class PlayersBean {
private String playerName = "Rafael";
// getters & setters
}
它会在点击http://localhost:8080/Leonard/faces/create.jsp
:
Rafael Here
请建议?
答案 0 :(得分:1)
这句话,
在JSP中,当$ {}不在范围内时,$ {}不会自动创建托管bean
仅适用于使用JSF 1.1或更早版本或使用JSP 2.0或更早版本的情况。从JSF 1.2和JSP 2.1开始,JSF EL与JSP EL unified,这就是它开始工作的原因(通过javax.el.CompositeELResolver
)。
但是,不建议使用${...}
来访问JSF托管bean。它不可写,而#{...}
是可写的,因此您确实需要在输入组件中使用#{...}
。在同一个JSF页面中混合${...}
和#{...}
可能最终会让未来的代码阅读器/维护者感到困惑。