I have a jsp containing two forms. The first form has database selection
criteria, and the second form contains the results in a dataTable with each row
containing a commandLink. The idea is to have a single view showing both the
selections and the results. I tried splitting the selection and the results
into separate views but that also failed in the same way.
When I run this via a my debugger the commandLink within the dataTable does not
call it's action (searchSelect). Interestingly, when I copy/past this same
commandLink beneath the dataTable it does execute the action.
I am using MyFaces and Tiles.
Any ideas?
Thanks in advance.
Dick
Here is my jsp:
...
<h:form id="operatorMntSearch">
<h:panelGrid
border="1"
cellspacing="2"
cellpadding="2"
columns="3"
footerClass="starraPanelGridFooter"
headerClass="starraPanelGridHeader"
styleClass="starraBody">
<f:facet name="header">
<h:outputText value="#{msg['class.SystemOperatorMnt']}"/>
</f:facet>
<f:facet name="footer">
<h:panelGroup>
<%@ include file="/jspf/common/searchButtons.jsp" %>
</h:panelGroup>
</f:facet>
<h:outputLabel for="syOperatorId">
<h:outputText value="#{msg['app.Operator.id']}"/>
<h:outputText value="#{msg['symbol.sep1']}"/>
</h:outputLabel>
<h:panelGroup>
<h:inputText id="syOperatorId" size="6"
value="#{systemOperatorMnt.key01}"/>
</h:panelGroup>
<h:panelGroup>
<h:commandButton action="#{commonHelp.helpGo}" id="operatorMntSub1"
value="#{msg['button.Help']}"/>
</h:panelGroup>
<h:outputLabel for="name">
...
</h:panelGrid>
</h:form>
<h:form id="operatorMntSearchData">
<h:dataTable
border="1"
cellspacing="2"
value="#{systemOperatorMnt.searchModel}"
var="systemOperatorBean">
<h:column>
<f:facet name="header">
<h:outputText value="id"/>
</f:facet>
<h:commandLink action="#{systemOperatorMnt.searchSelect}"
immediate="true">
<h:outputText value="This link fails to call searchSelect. id=
#{systemOperatorBean.syOperatorId}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="logonName"/>
</f:facet>
<h:outputText value="#{systemOperatorBean.logonName}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="name"/>
</f:facet>
<h:outputText value="#{systemOperatorBean.name}"/>
</h:column>
</h:dataTable>
<h:commandLink action="#{systemOperatorMnt.searchSelect}" immediate="true">
<h:outputText value="This link does call searchSelect. id=
#{systemOperatorBean.syOperatorId}"/>
</h:commandLink>
</h:form>
This generates the following html:
<tr><td><label for="operatorMntSearch:logonName">Logon
name:</label></td><td><input id="operatorMntSearch:logonName"
name="operatorMntSearch:logonName" type="text" value="" maxlength="24"
size="24" /></td><td></td></tr>
</tbody></table><input type="hidden" name="operatorMntSearch_SUBMIT" value="1"
/><input type="hidden" name="jsf_sequence" value="11" /><input type="hidden"
name="operatorMntSearch:_link_hidden_" /><script type="text/javascript"><!--
function clear_operatorMntSearch() {
var f = document.forms['operatorMntSearch'];
f.elements['operatorMntSearch:_link_hidden_'].value='';
f.target='';
}
clear_operatorMntSearch();
//--></script></form><form id="operatorMntSearchData"
name="operatorMntSearchData" method="post"
action="/starraShale/systemOperatorMntSearch.faces"
enctype="application/x-www-form-urlencoded">
<table border="1" cellspacing="2">
<thead>
<tr><th>id</th><th>logonName</th><th>name</th></tr></thead>
<tbody id="operatorMntSearchData:_idJsp53:tbody_element">
<tr><td><a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp53:0:_idJsp56';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:0:_idJsp56"> This link fails to
call searchSelect. id= 1 </a> </td><td>demo</td><td>User;Demo</td></tr>
<tr><td><a href="#"
...
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:7:_idJsp56"> This link fails to
call searchSelect. id= 8 </a> </td><td>hdumpty</td><td>Dumpty;Humpty</td></tr>
<tr><td><a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp53:8:_idJsp56';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:8:_idJsp56"> This link fails to
call searchSelect. id= 9 </a> </td><td>jsprat</td><td>Sprat;Jack</td></tr>
<tr><td><a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp53:9:_idJsp56';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:9:_idJsp56"> This link fails to
call searchSelect. id= 10 </a> </td><td>jnimble</td><td>Nimble;Jack</td></tr>
<tr><td><a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp53:10:_idJsp56';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:10:_idJsp56"> This link fails to
call searchSelect. id= 11 </a> </td><td>jquick</td><td>Quick;Jack</td></tr>
<tr><td><a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp53:11:_idJsp56';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp53:11:_idJsp56"> This link fails to
call searchSelect. id= 12 </a>
</td><td>jhorner</td><td>Horner;Jack</td></tr></tbody></table>
<a href="#"
onclick="bCancel=true;clear_operatorMntSearchData();document.forms['operatorMntSearchData'].elements['operatorMntSearchData:_link_hidden_'].value='operatorMntSearchData:_idJsp64';if(document.forms['operatorMntSearchData'].onsubmit){var
result=document.forms['operatorMntSearchData'].onsubmit(); if( (typeof result
== 'undefined') || result )
{document.forms['operatorMntSearchData'].submit();}}else{document.forms['operatorMntSearchData'].submit();}return
false;" id="operatorMntSearchData:_idJsp64"> This link does call searchSelect.
id= 0 </a> <input type="hidden" name="operatorMntSearchData_SUBMIT" value="1"
/><input type="hidden" name="jsf_sequence" value="11" /><input type="hidden"
name="operatorMntSearchData:_link_hidden_" /><script type="text/javascript"><!--
function clear_operatorMntSearchData() {
var f = document.forms['operatorMntSearchData'];
f.elements['operatorMntSearchData:_link_hidden_'].value='';
f.target='';
}
clear_operatorMntSearchData();
//--></script></form>
Here is the code:
public String search() {
...
searchList = operatorDaoServ.searchOperatorList(searchBean);
if (searchList != null) {
return Constants.OUTCOME_RESULTS;
}
else {
return null;
}
}
public String searchSelect() {
// My <h:commandLink within my <h:dataTable is not calling this action.
// TODO: get the data for the selected row.
return null;
}