Hello EJB 3.0 Users
I've just noticed that creates class that extends EntityQuery, some generated classes
do NOT have any restrictsion set in the RESTRICTIONS array. I tried to find out why but so
far I have not found any useful information on this. Anyways I have a class called
ExoshellUsersRolesList that extends EntityQuery (originally generated by Seam-Gen) to
which it did not have it's RESTRICTIONS array set. So I decided I would manually set
the array myself like so.
package com.domain.exoshellcms.session;
import com.domain.exoshellcms.entity.*;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.framework.EntityQuery;
import java.util.List;
import java.util.Arrays;
@Name("exoshellUserRolesList")
@Scope(ScopeType.SESSION)
public class ExoshellUserRolesList extends EntityQuery {
/* UNABLE TO GET RESTRICTIONS TO WORK WITHOUT POINTING TO NULL PARENT OBJECT I.E.
exoshellUsers, exoshellRoles or exoshellModules */
private static final String[] RESTRICTIONS = {
"lower(users.username) like
concat(lower(#{exoshellUserRolesList.exoshellUserRoles.exoshellUsers.username}),'%')",
"lower(exoshellUserRoles.exoshellRoles.roleName) like
concat(lower(#{exoshellUserRolesList.exoshellUserRoles.exoshellRoles.roleName}),'%')",
"lower(exoshellUserRoles.exoshellModules.moduleName) like
concat(lower(#{exoshellUserRolesList.exoshellUserRoles.exoshellModules.moduleName}),'%')"
};
private ExoshellUserRoles exoshellUserRoles = new ExoshellUserRoles();
private String queryString = new String("select exoshellUserRoles, users from
ExoshellUserRoles exoshellUserRoles join fetch exoshellUserRoles.exoshellUsers
users");
@Override
public String getEjbql() {
return queryString;
}
public ExoshellUserRoles getExoshellUserRoles() {
return exoshellUserRoles;
}
@Override
public List getRestrictions() {
return Arrays.asList(RESTRICTIONS);
}
@Override
public String getOrder() {
return new String("exoshellUserRoles.userRolesId asc");
}
}
I then created a corresponding interface form to search through a datable using the
ExoshellUsersList like so:
<rich:simpleTogglePanel label="User Roles search parameters"
switchType="ajax" opened="false" ignoreDupResponses="true"
eventsQueue="userSearchQueue" requestDelay="2000"
immediate="true" rendered="false">
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">User Name</ui:define>
<h:inputText id="userRoleName"
value="#{exoshellUserRolesList.exoshellUserRoles.exoshellUsers.username}">
<a:support event="onblur"
reRender="panelusers,userRolesPaginator"
ignoreDupResponses="true"/>
</h:inputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Role Name</ui:define>
<h:inputText id="userRoleRolename"
value="#{exoshellUserRolesList.exoshellUserRoles.exoshellRoles.roleName}">
<a:support event="onblur"/>
</h:inputText>
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">Module</ui:define>
<h:inputText id="userRoleModule"
value="#{exoshellUserRolesList.exoshellUserRoles.exoshellModules.moduleName}">
<a:support event="onblur"/>
</h:inputText>
</s:decorate>
</rich:simpleTogglePanel>
Unfortunately this was not enough as when I try to input text into one of the search
fields (like User Name) upon ajax update I get the error:
Exception during request processing:
Caused by javax.servlet.ServletException with message:
"/admin/ExoshellUserRolesEdit.xhtml @339,122
value="#{exoshellUserRolesList.exoshellUserRoles.exoshellUsers.username}":
Target Unreachable, 'exoshellUsers' returned null on
'com.domain.exoshellcms.entity.ExoshellUserRoles'"
Any insight, documentation or solutions to the exception above would be greatly
appreciated. I've include the relied upon EJB entities below after this post.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4262077#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...