我只是在Webapp中有一点惊喜,我在.jsp页面中使用EL.
我添加了一个布尔属性并抓住了我的头,因为我已经命名了一个布尔"isDynamic",所以我可以这样写:
<c:if test="${page.isDynamic}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
我发现哪个更容易阅读:
<c:if test="${page.dynamic}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是.jsp无法编译,错误如下:
javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com...
Run Code Online (Sandbox Code Playgroud)
我发现我的IDE(我花了一些时间注意它),在生成getter时,生成了一个名为的方法:
isDynamic()
Run Code Online (Sandbox Code Playgroud)
代替:
getIsDynamic()
Run Code Online (Sandbox Code Playgroud)
一旦我通过getIsDynamic()手动替换了isDynamic(),一切都运行正常.
所以我在这里有两个问题:
使用"is"启动布尔属性的名称是不是很糟糕?
不管是不是坏了,IntelliJ是否通过自动生成名为isDynamic而不是getIsDynamic的方法犯了错误?
我在jsp页面上下文中有以下对象的实例:
Class User{
private boolean isAdmin;
public boolean isAdmin(){return isAdmin}
}
Run Code Online (Sandbox Code Playgroud)
如何从EL查询isAdmin属性?这似乎不起作用:
${user.admin}
Run Code Online (Sandbox Code Playgroud)
这也不是:
${user.isAdmin}
Run Code Online (Sandbox Code Playgroud)
谢谢!
-摩根