Warning and Transaction Failed on EntityQuery
sandman202 Aug 17, 2008 5:20 AMI have a class called CodeList.java that I use to retrieve a listing when I perform a search. On my search CodeList.xhtml when I select both type and active, I receive on the top of the screen is Transaction failed
. However, if I select only one of these options, it works just fine. In the log file I also see the following:
21:58:02,415 WARN [lifecycle] javax.el.ELException: /CodeList.xhtml @63,65 rendered="#{empty codeList.resultList}": Error reading 'resultList' on type com.ds.artwork.CodeList_$$_javassist_10
CodeList.xhtml
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
template="layout/template.xhtml">
<ui:define name="body">
<h:messages globalOnly="true" styleClass="message"/>
<h:form id="cityStateZipSearch" styleClass="edit">
<rich:simpleTogglePanel label="Code Search Parameters" switchType="ajax">
<s:decorate id="typeDecoration" template="layout/display.xhtml">
<ui:define name="label">Type</ui:define>
<h:selectOneMenu value="#{codeList.code.type}" id="codeType" >
<s:selectItems value="#{codeList.codeTypes}" var="_codeType" label="#{_codeType.value}"
noSelectionLabel="Please Select Type... "/>
<s:convertEnum />
</h:selectOneMenu>
</s:decorate>
<s:decorate template="layout/display.xhtml">
<ui:define name="label">Code</ui:define>
<h:inputText id="code" value="#{codeList.code.code}"/>
</s:decorate>
<s:decorate template="layout/display.xhtml">
<ui:define name="label">Description</ui:define>
<h:inputText id="description" value="#{codeList.code.description}"/>
</s:decorate>
<s:decorate id="activeDecoration" template="layout/display.xhtml">
<ui:define name="label">Active</ui:define>
<h:selectOneMenu id="active"
value="#{codeList.code.strActive}">
<f:selectItems value="#{codeList.booleanCodes}" />
</h:selectOneMenu>
</s:decorate>
</rich:simpleTogglePanel>
<div class="actionButtons">
<h:commandButton id="search" value="Search" action="/CodeList.xhtml"/>
</div>
</h:form>
<rich:panel>
<f:facet name="header">Code Search Results</f:facet>
<div class="results" id="codeList">
<h:outputText value="No code exists"
rendered="#{empty codeList.resultList}"/>
<rich:dataTable id="codeList"
var="_code"
value="#{codeList.resultList}"
rendered="#{not empty codeList.resultList}">
<h:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="Type #{codeList.order=='type.value asc' ? messages.down : ( codeList.order=='type.value desc' ? messages.up : '' )}">
<f:param name="order" value="#{codeList.order=='type.value asc' ? 'type.value desc' : 'type.value asc'}"/>
</s:link>
</f:facet>
#{_code.type}
</h:column>
<h:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="Code #{codeList.order=='code asc' ? messages.down : ( codeList.order=='code desc' ? messages.up : '' )}">
<f:param name="order" value="#{codeList.order=='code asc' ? 'code desc' : 'code asc'}"/>
</s:link>
</f:facet>
#{_code.code}
</h:column>
<h:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="Description #{codeList.order=='description asc' ? messages.down : ( codeList.order=='description desc' ? messages.up : '' )}">
<f:param name="order" value="#{codeList.order=='description asc' ? 'description desc' : 'description asc'}"/>
</s:link>
</f:facet>
#{_code.description}
</h:column>
<h:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="Available #{codeList.order=='active asc' ? messages.down : ( codeList.order=='active desc' ? messages.up : '' )}">
<f:param name="order" value="#{codeList.order=='active asc' ? 'active desc' : 'active asc'}"/>
</s:link>
</f:facet>
#{_code.active}
</h:column>
<h:column>
<f:facet name="header">Action</f:facet>
<s:link view="/#{empty from ? 'Code' : from}.xhtml"
value="Select"
id="code">
<f:param name="codeId"
value="#{_code.id}"/>
</s:link>
</h:column>
</rich:dataTable>
</div>
</rich:panel>
<s:div styleClass="actionButtons" rendered="#{empty from}">
<s:button view="/CodeEdit.xhtml"
id="create"
value="Create Code">
<f:param name="codeId"/>
</s:button>
</s:div>
</ui:define>
</ui:composition>
CodeList.java
package com.ds.artwork;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.faces.model.SelectItem;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import com.ds.artwork.entity.Code;
import com.ds.artwork.entity.Item;
import com.ds.artwork.utils.CodeType;
@Name("codeList")
public class CodeList extends EntityQuery<Item> {
private static final long serialVersionUID = 1008397397027179231L;
// @In(required=false) @Out(required=false)
// private String active = "";
private static final String[] RESTRICTIONS = {
"code.type = #{codeList.code.type}",
"lower(code.code) like concat(lower(#{codeList.code.code}),'%')",
"lower(code.description) like concat(lower(#{codeList.code.description}),'%')",
};
private Code code = new Code();
@Override
public String getEjbql() {
return "select code from Code code";
}
@Override
public Integer getMaxResults() {
return 25;
}
public Code getCode() {
return code;
}
@Override
public List<String> getRestrictions() {
// return Arrays.asList(RESTRICTIONS);
//List<String> restrictions = Arrays.asList(RESTRICTIONS);
ArrayList<String> restrictions = new ArrayList<String>(0);
restrictions.addAll(Arrays.asList(RESTRICTIONS));
if (code.getStrActive() != null) {
restrictions.add("code.active = #{" + Boolean.valueOf(code.getStrActive()) + "}");
}
return restrictions;
}
@Override
public String getOrder() {
if (super.getOrder() == null) {
setOrder("type asc");
}
return super.getOrder();
}
public CodeType[] getCodeTypes() {
return CodeType.values();
}
@SuppressWarnings("unchecked")
public List<Code> getBooleanCodes() {
// return
// this.getEntityManager().createNamedQuery("code.findCodesByType").setParameter("type",
// CodeType.BOOLEAN).getResultList();
List choices = new ArrayList();
choices.add(new SelectItem("", " "));
choices.add(new SelectItem("true", "True"));
choices.add(new SelectItem("false", "False"));
return choices;
}
@SuppressWarnings("unchecked")
public List<Code> getEditionCodes() {
return this.getEntityManager().createNamedQuery("code.findCodesByType")
.setParameter("type", CodeType.EDITION).getResultList();
}
@SuppressWarnings("unchecked")
public List<Code> getMediumCodes() {
return this.getEntityManager().createNamedQuery("code.findCodesByType")
.setParameter("type", CodeType.MEDIUM).getResultList();
}
}
Does anyone know what the problem is?