Error: xml declaration not at start of external entity
bostone Apr 24, 2008 2:04 PMHi I'm trying to submit search value and populate datatable with results. I'll put the sourcecode below but here what happens when I click submit button
1. I will see JS error in firebug
xml declaration not at start of external entity [Break on this error] undefined userGroupRole.fac... (line 13)
That line 13 in case you wonder resolves to the following when I click on the error in firebug
<script language="javascript1.2" src="./javascript/javascript.js" type="text/javascript"><!-- //--></script>
2. Visually, nothing changes in the modal dialog. However if I reload the page and call modal again - I will see the form table populated with search data.
3. Also if I remove ajaxSubmit="true" from a4j:form, on submit form gets populated, no error is issued but of course due to the page being reloaded my modal is gone and I have to unhide it to see the results.
Here's complete source for the xhtml page. I initially had the pop-up form in its own xhtml but decided to do the least complicated case first. The pop-up is defined at the bottom of the page
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:s="http://myfaces.apache.org/sandbox"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:c="http://java.sun.com/jstl/core">
<head>
<script language="javascript1.2" src="./javascript/shuttle.js"
type="text/javascript"></script>
</head>
<body>
<ui:composition template="/WEB-INF/layout/layout.xhtml">
<ui:define name="title">
Admin - Users Groups and Roles
</ui:define>
<ui:define name="content">
<a4j:region selfRendered="true">
<h:form id="userGroupRoleForm">
<a4j:outputPanel ajaxRendered="true">
<ui:include src="messages.xhtml" />
<h:messages layout="table" showSummary="true" showDetails="true"
style="width: 100%" />
</a4j:outputPanel>
<div>
<h1>User Account Management</h1>
<h:panelGrid columnClasses="header" border="0" cellpadding="0"
cellspacing="0" width="100%">
<h:outputText value="NAMS User Account Management" />
</h:panelGrid>
<div id="msgLabel"><h:panelGrid columns="4"
styleClass="detail" columnClasses="label">
<h:outputText value="Users" />
<h:selectOneMenu id="userList"
value="#{userGroupRoleBean.selectedUser}"
converter="#{namsUserConverter}">
<f:selectItem itemValue="#{userGroupRoleBean.defaultUser}"
itemLabel="New" />
<f:selectItems value="#{userGroupRoleBean.users}" />
<a4j:support action="#{userGroupRoleBean.select}" event="onchange"
ajaxSingle="true"
reRender="bemsId,name,comments,
listNamsRoles,listUserRoles,listNamsGroups,
listUserGroups,userAppStat,btnDelete" />
</h:selectOneMenu>
<h:outputText value="" />
<h:outputText value="" />
</h:panelGrid> <h:panelGrid columns="4" styleClass="detail" columnClasses="label">
<h:outputLabel>
<h:outputText id="lblBemsid" value="BemsId"
rendered="#{userGroupRoleBean.newMode}" />
<h:outputText style="color: #DD0707" value=" * "
rendered="#{userGroupRoleBean.newMode}" />
</h:outputLabel>
<h:inputText id="bemsId" size="25" style="width: 175px"
styleClass="required min-3 is-not-new is-not-duplicate"
required="true" value="#{userGroupRoleBean.bemsId}"
disabled="#{userGroupRoleBean.editUserFlag}">
<a4j:support action="#{userGroupRoleBean.lookupUserName}"
event="onblur" reRender="name" />
</h:inputText>
<h:commandButton id="lookupUser" value="Lookup User"
immediate="true" onclick="return false" styleClass="button" />
<rich:componentControl for="userSearchPanel" attachTo="lookupUser"
operation="show" event="onmousedown" />
<h:outputText value="" />
<h:message for="bemsId" id="userBemsIdError"
errorClass="validation-advice" errorStyle="display:block" />
</h:panelGrid> <h:panelGrid columns="4" styleClass="detail" columnClasses="label">
<h:outputLabel>
<h:outputText id="lblName" value="Name" />
<h:outputText style="color: #DD0707" value=" * " />
</h:outputLabel>
<h:inputText id="name" size="25" maxlength="50"
value="#{userGroupRoleBean.name}" disabled="true" />
<h:outputText value="" />
<h:outputText value="" />
</h:panelGrid> <h:panelGrid columns="4" styleClass="detail" columnClasses="label">
<h:outputText value="Status" />
<h:selectOneMenu id="userAppStat"
value="#{userGroupRoleBean.selectedUser.status}">
<f:selectItem itemLabel="Active" itemValue="A" />
<f:selectItem itemLabel="Inactive" itemValue="I" />
<a4j:support event="onfocus" reRender="appContactList" />
</h:selectOneMenu>
<h:outputText value="" />
<h:outputText value="" />
</h:panelGrid></div>
<h:panelGrid columns="4" styleClass="detail" columnClasses="label">
<h:outputText value="Comments" />
<h:inputTextarea id="comments" cols="40" rows="5"
value="#{userGroupRoleBean.selectedUser.comments}" />
<h:outputText value="" />
<h:outputText value="" />
</h:panelGrid> <h:outputText value="" /> <f:verbatim>
<br />
</f:verbatim><h:outputText value="" /> <rich:simpleTogglePanel
switchType="client" label="Assign Roles and Groups">
<div class="shuttle"><!-- Shuttle control starts -->
<div id="listBoxTable"><h:panelGrid columns="3"
styleClass="detail" cellspacing="1" cellpadding="1" width="30%">
<h:outputLabel>
<h:outputText value="Nams Roles" />
</h:outputLabel>
<h:panelGrid columns="1">
<f:verbatim> </f:verbatim>
</h:panelGrid>
<h:outputLabel>
<h:outputText value="User Roles" />
</h:outputLabel>
<h:selectManyListbox id="listNamsRoles"
value="#{userGroupRoleBean.selectedNamsRoles}"
converter="#{roleConverter}">
<f:selectItems value="#{userGroupRoleBean.namsRoles}" />
</h:selectManyListbox>
<h:panelGrid columns="1" cellspacing="1" cellpadding="1">
<div>
<button id="moveAllR" title="Move all right">>></button>
</div>
<div>
<button id="moveR" title="Move selected right">></button>
</div>
<div>
<button id="moveL" title="Move selected left"><</button>
</div>
<div>
<button id="moveAllL" title="Move all left"><<</button>
</div>
</h:panelGrid>
<h:selectManyListbox id="listUserRoles"
value="#{userGroupRoleBean.selectedUserRoles}"
converter="#{roleConverter}">
<f:selectItems value="#{userGroupRoleBean.userRoles}" />
</h:selectManyListbox>
<h:outputLabel>
<h:outputText value="Nams Groups" />
</h:outputLabel>
<h:panelGrid columns="1">
<f:verbatim> </f:verbatim>
</h:panelGrid>
<h:outputLabel>
<h:outputText value="User Groups" />
</h:outputLabel>
<h:selectManyListbox id="listNamsGroups"
value="#{userGroupRoleBean.selectedNamsGroups}"
converter="#{groupConverter}">
<f:selectItems value="#{userGroupRoleBean.namsGroups}" />
</h:selectManyListbox>
<h:panelGrid columns="1" cellspacing="1" cellpadding="1">
<div>
<button id="moveGroupAllR" title="Move all right">>></button>
</div>
<div>
<button id="moveGroupR" title="Move selected right">></button>
</div>
<div>
<button id="moveGroupL" title="Move selected left"><</button>
</div>
<div>
<button id="moveGroupAllL" title="Move all left"><<</button>
</div>
</h:panelGrid>
<h:selectManyListbox id="listUserGroups"
value="#{userGroupRoleBean.selectedUserGroups}"
converter="#{groupConverter}">
<f:selectItems value="#{userGroupRoleBean.userGroups}" />
</h:selectManyListbox>
<h:inputHidden id="selectedUserRoles"
value="#{userGroupRoleBean.selectedUserRoles}"
converter="#{deviceTypeRolesConverter}" />
<h:inputHidden id="selectedUserGroups"
value="#{userGroupRoleBean.selectedUserGroups}"
converter="#{namsGroupsConverter}" />
</h:panelGrid></div>
</div>
<script language="JavaScript">
// enable validation
new Validation('userGroupRoleForm', {immediate:true});
// add ajax validation for duplicate name
</script>
<!-- Shuttle JS -->
<script language="JavaScript">
var shuttle;
var shuttleGroup;
window.onload = function() {
shuttle = new NamsShuttle(
"userGroupRoleForm:listNamsRoles",
"userGroupRoleForm:listUserRoles",
"userGroupRoleForm:selectedUserRoles",
"moveAllR",
"moveR",
"moveL",
"moveAllL",
true
);
shuttleGroup = new NamsShuttle(
"userGroupRoleForm:listNamsGroups",
"userGroupRoleForm:listUserGroups",
"userGroupRoleForm:selectedUserGroups",
"moveGroupAllR",
"moveGroupR",
"moveGroupL",
"moveGroupAllL",
true
);
shuttle.init();
shuttleGroup.init();
document.userGroupRoleForm.moveR.onclick = function() {
shuttle.moveRight();
return false;
};
document.userGroupRoleForm.moveL.onclick = function() {
shuttle.moveLeft();
return false;
};
document.userGroupRoleForm.moveAllR.onclick = function() {
shuttle.moveAllRight();
return false;
};
document.userGroupRoleForm.moveAllL.onclick = function() {
shuttle.moveAllLeft();
return false;
};
document.userGroupRoleForm.moveGroupR.onclick = function() {
shuttleGroup.moveRight();
return false;
};
document.userGroupRoleForm.moveGroupL.onclick = function() {
shuttleGroup.moveLeft();
return false;
};
document.userGroupRoleForm.moveGroupAllR.onclick = function() {
shuttleGroup.moveAllRight();
return false;
};
document.userGroupRoleForm.moveGroupAllL.onclick = function() {
shuttleGroup.moveAllLeft();
return false;
};
};
</script>
<!-- Shuttle control ends -->
</rich:simpleTogglePanel>
<div><h:panelGroup styleClass="buttonBar">
<h:commandButton id="btnSave" value="Save"
onclick="shuttleGroup.setSelected(); return shuttle.setSelected();"
action="#{userGroupRoleBean.update}" styleClass="button" />
<h:commandButton id="btnDelete" value="Delete"
action="#{userGroupRoleBean.delete}"
disabled="#{userGroupRoleBean.deleteBtnMode}"
onclick="shuttleGroup.setSelected(); shuttle.setSelected(); return confirmDelete('userGroupRoleForm','name');"
styleClass="button" />
<h:commandButton id="btnReset" value="Reset" type="reset"
immediate="true" styleClass="button" />
</h:panelGroup></div>
</div>
</h:form>
</a4j:region>
<!-- Usear search pop-up -->
<rich:modalPanel id="userSearchPanel" width="400" height="350">
<f:facet name="header">
<h:outputText value="User Lookup" />
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="/images/close.png" style="cursor:pointer"
id="hidelink" />
<rich:componentControl for="userSearchPanel" attachTo="hidelink"
operation="hide" event="onclick" />
</h:panelGroup>
</f:facet>
<a4j:form id="userLookupForm" ajaxSubmit="true">
<div id="msgLabel"><h:panelGrid columns="3"
styleClass="detail" columnClasses="label">
<h:outputLabel>
<h:outputText value="Search For" />
</h:outputLabel>
<h:inputText id="searchStr" size="25"
value="#{userLookupBean.searchStr}" />
<h:commandButton id="searchBtn" value="Search"
styleClass="button" reRender="userSearchResults" />
</h:panelGrid></div>
<h:panelGrid columns="2" id="searchHelp" width="100%">
<h:outputLabel id="bluesString">
<h:outputText style="color: #DD0707"
value="Search by BemsId or lastname or lastname,firstname"
rendered="#{contactBean.bluesFlag}" />
</h:outputLabel>
</h:panelGrid>
<a4j:outputPanel>
<h:dataTable value="#{userLookupBean.userSearchList}"
var="searchList" id="userSearchResults" styleClass="list"
rowClasses="odd,even" cellpadding="0" cellspacing="0" width="30%">
<h:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputLink title="#{searchList.fullName}"
onmousedown="update(this.title,#{searchList.namsEmployee.bemsid});"
value="#{searchList.namsEmployee.bemsid}" onclick="return false">
<h:outputText value="#{searchList.fullName}" />
</h:outputLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="BemsId" />
</f:facet>
<h:outputLink
value="http://card.web.boeing.com/webcard.cfm?id=#{searchList.namsEmployee.bemsid}"
target="_blank">
<h:outputText value="#{searchList.namsEmployee.bemsid}" />
</h:outputLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Phone" />
</f:facet>
<h:outputText value="#{searchList.namsEmployee.phone}" />
</h:column>
</h:dataTable>
</a4j:outputPanel>
</a4j:form>
<div><h:outputLink value="#" id="link">
Hide
<rich:componentControl for="userSearchPanel" attachTo="link"
operation="hide" event="onclick" />
</h:outputLink></div>
</rich:modalPanel>
</ui:define>
</ui:composition>
</body>
</html>