我有一个看起来像这样的类:
public class ScoreDefinition {
protected Boolean primary;
public Boolean isPrimary() {
return primary;
}
public void setPrimary(Boolean value) {
this.primary = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图primary在EL中访问它的属性,如下所示:
<c:forEach var="score" items="${scores}">
<input type="checkbox"
value="${score.primary}"
name="someName"
class="textField"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
但我得到了例外:
javax.el.PropertyNotFoundException: Property 'primary' not readable on type java.lang.Boolean
at javax.el.BeanELResolver$BeanProperty.read(BeanELResolver.java:280)
at javax.el.BeanELResolver$BeanProperty.access$000(BeanELResolver.java:230)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
at org.apache.jsp.WEB_002dINF.views.administer.projectBlocks_jsp._jspx_meth_c_005fforEach_005f2(projectBlocks_jsp.java:806)
at org.apache.jsp.WEB_002dINF.views.administer.projectBlocks_jsp._jspx_meth_c_005fif_005f2(projectBlocks_jsp.java:709)
at org.apache.jsp.WEB_002dINF.views.administer.projectBlocks_jsp._jspx_meth_form_005fform_005f0(projectBlocks_jsp.java:245)
at org.apache.jsp.WEB_002dINF.views.administer.projectBlocks_jsp._jspService(projectBlocks_jsp.java:150)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) …Run Code Online (Sandbox Code Playgroud) 我有结果
Query query = session.createQuery("From Pool as p left join fetch p.poolQuestion as s");
Run Code Online (Sandbox Code Playgroud)
查询,我想在JSP上显示它.
我有循环:
<c:forEach items="${pools}" var="pool">
<p>${pool.name}</p>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我想显示poolQuestion表(连接表)的结果.我想要显示的值是"回答".
我该怎么做?
<c:forEach items="${pools}" var="pool">
<p>${pool.answer}</p>
<p>${pool.name}</p>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用.
错误是:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/home.jsp at line 21
18: <c:forEach items="${pools}" var="pool">
19:
20: <p>${pool.name}</p>
21: <c:out value="${pool.poolQuestion.answer}"/>
22:
23: </c:forEach>
24:
SEVERE: Servlet.service() for servlet appServlet threw exception
javax.el.PropertyNotFoundException: Property 'answer' not found on type com.pool.app.domain.Pool
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
at javax.el.BeanELResolver.property(BeanELResolver.java:300)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
at …Run Code Online (Sandbox Code Playgroud) 我只是在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的方法犯了错误?
我有以下树节点类:
public abstract class DocumentTreeNode extends TreeNodeImpl implements javax.swing.tree.TreeNode
{
private Boolean isToC;
...
public Boolean isToC()
{
return isToC;
}
public void setToC(Boolean isToC)
{
this.isToC = isToC;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的复选框,指示文档是否包含在任何内容中.但是,当试图从JSF 2 EL中引用它时
...
<h:selectBooleanCheckbox value="#{node.isToC}" />
...
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
引起:javax.el.PropertyNotFoundException:/main.xhtml @ 541,64 value ="#{node.isToC}":类'ChapterTreeNode'没有属性'isToC'.
(我想我几乎尝试了所有组合,至少我觉得这样...... ;-))
如何解决该布尔属性?需要改变什么?
如果一个object属性声明为Boolean类型(不是原始boolean)那么EL识别它似乎有问题!
假设您有以下对象
class Case{
private Boolean valid;
public Boolean isValid(){
return this.valid;
}
public void setValid(Boolean val){
this.valid = val;
}
}
Run Code Online (Sandbox Code Playgroud)
假设我们在名称为"case"的请求中放置了Case类型的对象,然后我在JSP中尝试这个:
<td>Object is ${case.valid ? "Valid":"Invalid"} </td>
Run Code Online (Sandbox Code Playgroud)
这给了我错误"有效"不是对象Case的属性!如果我将有效从布尔值更改为原始布尔值,它就可以了!
这是EL中布尔类型的已知问题,它们不被识别为布尔值而是被识别为Java"普通"对象?处理这个问题的正确方法是什么?
谢谢
我有一个使用JSF 2.1和PrimeFaces的项目.我试图使用简单的<h:outputText>引用#{myBean.matriz},我得到了这个错误:
SEVERE: javax.el.PropertyNotFoundException: ... value="#{myBean.matriz}": Missing Resource in EL implementation: ???propertyNotReadable???
Run Code Online (Sandbox Code Playgroud)
吸气剂是:isMatriz().应该是getMatriz()吗?
如果我有
ArrayList<Person> persons
Run Code Online (Sandbox Code Playgroud)
我如何在EL中访问它?
<c:foreach items="${what goes here??}" var="person">${person.title}</c:foreach>
Run Code Online (Sandbox Code Playgroud)