PrimeFaces commandButton-actionListener nicht feuern
Ich habe Probleme damit, mein actionListener
im <p:commandButton>
zu Feuer in einen dialog. Ich habe versucht, es zu handeln, das entfernen der ()
hinzufügen der ()
, dass der Umfang der managed bean, bewegen die ajax-Anweisungen, und nichts hat bisher geholfen. Alles funktionierte, bis ich aktualisiert, Netbeans, alles brach irgendwie eine Bibliothek entfernt wurde, war es die commons-fileupload-Glas.
Geschah dies ohne änderungen am code, nur nach netbeans aktualisiert. Netbeans 7.3, JSF2.2, Tomcat 7, jdk1.7, primefaces 4.0. Gibt es eine funktionierende version von diesem in meinem tomcat-manager-Anwendung, wenn ich könnte möglicherweise abrufen, die hoffentlich alles wäre wieder in Ordnung, aber ich kann nichts finden, bekommen Sie die Dateien wieder von tomcat. Meine Frage ist also, warum ist diese nicht feuern? Ist es die Reihenfolge der Aufrufe in den button? Ich kann nicht umbrochen, mein Kopf herum, warum dies nicht funktioniert.
BEARBEITEN Fehlermeldung ich erhalte nach der Umstellung Formular-und dialog-Positionen -
Jul 10, 2014 11:50:48 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/sampleExport.xhtml]
javax.faces.FacesException: Cannot find component with expression ":searchDialogID" referenced from "mainForm:j_idt22".
at org.primefaces.expression.SearchExpressionFacade.resolveComponentInternal(SearchExpressionFacade.java:271)
EDIT 3 Überarbeitet
Bean
@ManagedBean
@ViewScoped
public class SampleExportController implements Serializable {
//Variables used to show or hide panels on the webpage
private boolean _addTill = false;
private boolean _allowAddingExport;
private boolean _allowDelExport;
private boolean _allowModExport;
private boolean _allowReading;
private boolean _previousCrop;
private boolean _spreadSelected;
//Variables Used For Whole Form
private ArrayList<Account> _agronomers;
private StreamedContent _file;
private ArrayList<String> _growers;
private SampleSearch _search;
private LabSampleHelper _labHelper;
private ArrayList<AdminLabNumber> _labNumbers;
private NutrientsGuide _nutriGuide;
private SampleAdminHelper _saHelper;
private List<String> _sampleTypes;
private SampleAlter _selectedSample;
private AdminLabNumber _selectedLab;
private QueryHelper _qHelper;
private List<String> _years;
public SampleExportController() {
AllowedRights awdRight = AllowedRights.getAllowedRights();
Access rights = awdRight.getAccessRigths("exportSample");
if (rights != null) {
_allowAddingExport = rights.getOperationAdd();
_allowDelExport = rights.getOperationDel();
_allowModExport = rights.getOperationMod();
_allowReading = rights.getReadAccess();
} else {
_allowAddingExport = false;
_allowDelExport = false;
_allowModExport = false;
_allowReading = false;
}
_search = new SampleSearch();
_saHelper = new SampleAdminHelper();
_qHelper = new QueryHelper();
_years = _saHelper.getYears();
if (_years != null && !_years.isEmpty()) {
_search.setYear(_years.get(0));
}
_sampleTypes = _saHelper.getSampleTypes();
_labHelper = new LabSampleHelper();
}
public void initSearch() {
AccountHelper acHelper = new AccountHelper();
_agronomers = acHelper.getAllAgronomers();
SampleAdminHelper saHelper = new SampleAdminHelper();
_growers = saHelper.getAllGrowers();
}
public void loadSearch() {
UIComponent table = FacesContext.getCurrentInstance().getViewRoot().findComponent(":mainForm:DTsamples");
table.setValueExpression("sortBy", null);
_search.setStage("Completed");
_labNumbers = _saHelper.exportSampleSearch(_search);
ExportFormatHelper efHelper = new ExportFormatHelper();
for (int i = 0; i < _labNumbers.size(); i++) {
_labNumbers.get(i).addExportSettings(efHelper.getFormats(_labNumbers.get(i).getAccountNumber(), _labNumbers.get(i).getSampleType()));
}
//loadExportSettings from account
_agronomers.clear();
_growers.clear();
}
/**
* @return the _search
*/
public SampleSearch getSearch() {
return _search;
}
/**
* @return the _labNumbers
*/
public ArrayList<AdminLabNumber> getLabNumbers() {
return _labNumbers;
}
/**
* @return the _agronomers
*/
public ArrayList<Account> getAgronomers() {
return _agronomers;
}
/**
* @return the _growers
*/
public ArrayList<String> getGrowers() {
return _growers;
}
/**
* @return the _selectedSample
*/
public SampleAlter getSelectedSample() {
return _selectedSample;
}
/**
* @param selectedSample the _selectedSample to set
*/
public void setSelectedSample(SampleAlter selectedSample) {
this._selectedSample = selectedSample;
//This gets the value of the initial till level from the sample
_initialTill = _selectedSample.getTilled();
_initialPreviousCrop = _selectedSample.getPreviousCrop();
if (selectedSample.getSampleType().equalsIgnoreCase("Soil")) {
if (_crop1 == null | _crop2 == null || _crop3 == null) {
_crop1 = new CropGuide(_qHelper, _selectedSample);
_crop2 = new CropGuide(_qHelper, _selectedSample);
_crop3 = new CropGuide(_qHelper, _selectedSample);
}
_nutriGuide = new NutrientsGuide(_crop1.getRec(),_selectedSample);
boolean flag1, flag2, flag3;
flag1 = _crop1.refresh();
flag2 = _crop2.refresh();
flag3 = _crop3.refresh();
if (flag1 || flag2 || flag3) {
RequestContext.getCurrentInstance().update("nutrientguides");
}
}
}
/**
* @return the _file
*/
public StreamedContent getFile() {
return _file;
}
/**
* @return the _selectedLab
*/
public AdminLabNumber getSelectedLab() {
return _selectedLab;
}
/**
* @param selectedLab the _selectedLab to set
*/
public void setSelectedLab(AdminLabNumber selectedLab) {
this._selectedLab = selectedLab;
}
/**
* @return the _years
*/
public List<String> getYears() {
return _years;
}
/**
* @return the _sampleTypes
*/
public List<String> getSampleTypes() {
return _sampleTypes;
}
public void setPreviousCrop(boolean _previousCrop) {
this._previousCrop = _previousCrop;
}
}
xhtml meist voll
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="template/desktop_viewer.xhtml">
<ui:define name="PageName">
<title>Sample Export</title>
</ui:define>
<ui:define name="PageHeader">
Sample Export
</ui:define>
<ui:define name="PageLocation">
Viewer
</ui:define>
<ui:define name="Body" >
<script type="text/javascript">
function start() {
statusDialog.show();
}
function stop() {
statusDialog.hide();
}
</script>
<h:form id="mainForm" rendered="#{sampleExportController.allowReading eq true}">
<p:dialog modal="true" widgetVar="statusDialog" header="Status" resizable="false" draggable="false" closable="false" appendToBody="true">
<p:graphicImage value="./resources/images/ajaxloading.gif" />
</p:dialog>
<p:ajaxStatus style="width:16px;height:16px;" id="ajaxStatusPanel">
<f:facet name="start">
<h:graphicImage value="./resources/images/ajaxloading.gif" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
<p:growl id="growl" showDetail="true" autoUpdate="true"/>
<p:commandButton oncomplete="searchDialog.show()" update=":innerSearch:searchDialogID" value="Search" icon="ui-icon-search" actionListener="#{sampleExportController.initSearch}"/>
<p:dataTable id="DTsamples" widgetVar="DTsamplesVw" var="labNumbers" value="#{sampleExportController.labNumbers}"
paginator="true" rows="10" scrollable="true" rowStyleClass="#{labNumbers.rowColorByType}">
<p:column style="width:10px">
<p:rowToggler />
</p:column>
<p:column headerText="LabNumber" footerText="LabNumber">
#{labNumbers.number}
</p:column>
<p:column headerText="Sample Type" footerText="Sample Type">
#{labNumbers.sampleType}
</p:column>
<p:rowExpansion >
<p:panelGrid style="width: 460px;">
<f:facet name="header">
<p:row>
<p:column colspan="1" style="width: 320px">
Submitter
</p:column>
<p:column colspan="1" style="width:150px">
Lab Number Report Export
</p:column>
<p:column colspan="1" style="width: 280px">
Lab Number CSV Export
</p:column>
</p:row>
</f:facet>
<p:row>
<p:column>
<h:panelGrid columns="1" styleClass="Ignore" >
<h:outputText value=" #{''.concat(labNumbers.getSamples().get(0).agronomer.accountNumber).concat(' - ').concat(labNumbers.getSamples().get(0).agronomer.lastName ).concat(' , ').concat(labNumbers.getSamples().get(0).agronomer.firstName)}"/>
<h:outputText value=" #{'Email: '.concat(labNumbers.getSamples().get(0).agronomer.primaryEmail)}"/>
<h:outputText value=" #{'Email 2: '.concat(labNumbers.getSamples().get(0).agronomer.email2)}"/>
<h:outputText value=" #{'Email 3: '.concat(labNumbers.getSamples().get(0).agronomer.email3)}"/>
</h:panelGrid>
</p:column>
<p:column style="text-align: center;">
<h:panelGrid styleClass="Ignore">
<p:commandLink ajax="false" id="AlternativeValues" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateAlternativeValueReport(labNumbers,false)}">
<p:fileDownload value ="#{sampleExportController.file}" />
</p:commandLink>
<p:commandLink ajax="false" id="multiPdf" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateMultiSampleReportPDFLab(labNumbers,false)}">
<p:fileDownload value="#{sampleExportController.file}" />
<p:graphicImage value="./resources/images/pdf.png" alt="Download the report by lab Number as a PDF." title="Normal Report"/>
</p:commandLink>
<p:commandLink ajax="false" id="multiPdfPage" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateMultiSampleReportPDFLab(labNumbers,true)}" rendered="#{labNumbers.sampleType eq 'Manure'}">
<p:fileDownload value="#{sampleExportController.file}" />
<p:graphicImage value="./resources/images/pdf_multi.jpg" alt="Download the report by lab Number as a PDF." title="Sample Per Page Report"/>
</p:commandLink>
</h:panelGrid>
</p:column>
<p:column>
<p:outputLabel for="exportsetting" value="Export Setting:"/>
<p:selectOneMenu id="exportsetting" value="#{labNumbers.selectedExport}" effect="fade" style="width:160px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{labNumbers.exportSettings}" var="export" itemLabel="#{export}" itemValue="#{export}" />
<p:ajax update=":mainForm:DTsamples:downloadLink" event="change" listener="#{sampleExportController.setSelectedLab(labNumbers)}"/>
</p:selectOneMenu>
<p:commandLink id="downloadLink" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop)"
disabled="#{empty labNumbers.selectedExport}" actionListener="#{sampleExportController.generateSpreadSheet()}">
<p:graphicImage value="./resources/images/csv.png" alt="Download the report by lab Number as a CSV."/>
<p:fileDownload value="#{sampleExportController.file}"/>
</p:commandLink>
</p:column>
</p:row>
</p:panelGrid>
<p:dataTable id="nested" var="sampleheader" value="#{labNumbers.samples}" scrollable="true"
rowStyleClass="#{sampleheader.rowColorByType}" scrollHeight="150">
<p:column headerText="Container ID">
#{sampleheader.containerID}
</p:column>
<p:column headerText="Sample ID">
#{sampleheader.sampleID}
</p:column>
<p:column headerText="Field ID">
#{sampleheader.fieldID}
</p:column>
<p:column headerText="Grower">
#{sampleheader.grower}
</p:column>
<p:column headerText="Sample Type">
#{sampleheader.sampleType}
</p:column>
<p:column headerText="Notes">
#{sampleheader.note}
</p:column>
<p:column headerText="View Sample" style="width:8%">
<p:commandButton update=":viewerID" oncomplete="viewerDialog.show()" process="@this" styleClass="compress" icon="ui-icon-newwin">
<f:setPropertyActionListener value="#{sampleheader}" target="#{sampleExportController.selectedSample}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
</h:form>
<h:outputText value="Nice Try" rendered="#{sampleExportController.allowReading eq false}"/>
<h:form id="innerSearch"><p:dialog id="searchDialogID" widgetVar="searchDialog" header="Sample search" resizable="false" draggable="false" showEffect="puff"
hideEffect="puff" appendToBody="false" modal="true" rendered="#{sampleExportController.allowReading eq true}">
<h:panelGrid columns="4">
<h:outputText value="Starting Lab Number:"/>
<p:inputText value="#{sampleExportController.search.labnumberStart}" maxlength="20"/>
<h:outputText value="Ending Lab Number:"/>
<p:inputText value="#{sampleExportController.search.labnumberEnd}" maxlength="20"/>
<h:outputText value="Starting Container ID:"/>
<p:inputText value="#{sampleExportController.search.containerIDStart}" maxlength="11"/>
<h:outputText value="Ending Container ID:"/>
<p:inputText value="#{sampleExportController.search.containerIDEnd}" maxlength="11"/>
<h:outputText value="Season:"/>
<p:selectOneMenu value="#{sampleExportController.search.year}"
panelStyle="width:150px" effect="fade" var="p" style="width:160px"
filter="true" filterMatchMode="contains">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{sampleExportController.years}" var="year" itemLabel="#{year}" itemValue="#{year}"/>
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<p:outputLabel for="acAg" value="Agronomist -- You may now search by any value"/>
<p:selectOneMenu id="acAg" value="#{sampleExportController.search.agronomist}" converter="agronomerSampleExportConverter"
panelStyle="width:170px" effect="fade" var="p" style="width:160px"
filter="true" filterMatchMode="contains" >
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{sampleExportController.agronomers}" var="agronomer" itemLabel="#{agronomer.lastName} #{agronomer.company} #{agronomer.firstName} #{agronomer.accountNumber}" itemValue="#{agronomer}"/>
<p:column >
Base Ac. #: #{p.account.accountNumber}<br/>
Company Name: #{p.company}<br/>First Name:#{p.firstName}<br/><strong>Last Name:#{p.lastName}</strong>
</p:column>
</p:selectOneMenu>
<h:outputText value="Sample Type:"/>
<p:selectOneMenu id="sampleType" value="#{sampleExportController.search.sampleType}" effect="fade" >
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{sampleExportController.sampleTypes}" var="stype" itemLabel="#{stype}" itemValue="#{stype}"/>
</p:selectOneMenu>
<p:outputLabel for="acGro" value="Grower"/>
<p:selectOneMenu id="acGro" value="#{sampleExportController.search.grower}"
panelStyle="width:150px" effect="fade" var="p" style="width:160px"
filter="true" filterMatchMode="contains" >
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{sampleExportController.growers}" var="grower" itemLabel="#{grower}" itemValue="#{grower}"/>
</p:selectOneMenu>
</h:panelGrid>
<p:commandButton update=":mainForm:DTsamplesVw" process="innerSearch" icon="ui-icon-search" value="Search" actionListener="#{sampleExportController.loadSearch}" oncomplete="searchDialog.hide()"/>
</p:dialog>
</h:form>
<p:dialog id="viewerID" widgetVar="viewerDialog" modal="true" dynamic="true" hideEffect="puff" showEffect="puff" appendToBody="false"
maximizable="true" header="Viewing selected samples" rendered="#{sampleExportController.allowReading eq true}">
<h:form id="innerView">
<h:panelGrid columns="2" width="100%">
<h:panelGrid>
<p:panelGrid >
<f:facet name="header">
<p:row>
<p:column colspan="1" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
CSV Single Sample Report
</p:column>
<p:column colspan="1" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
Single Sample Report Export
</p:column>
<p:column colspan="1">
Lab Number Report Export
</p:column>
</p:row>
</f:facet>
<p:row>
<p:column style="text-align: center;" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
<p:commandLink ajax="false" id="cOnecsv" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateSingleSampleReportCSV}" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
<p:fileDownload value="#{sampleExportController.file}" />
<p:graphicImage value="./resources/images/csv.png" alt="Download the report by sample as a PDF."/>
</p:commandLink>
<p:tooltip for="cOnecsv" value="Download the report by sample as a CSV." showEffect="fade" hideEffect="fade" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}"/>
</p:column>
<p:column style="text-align: center;" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
<p:commandLink ajax="false" id="cOnePdf" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateSingleSampleReportPDF}" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}">
<p:fileDownload value="#{sampleExportController.file}" />
<p:graphicImage value="./resources/images/pdf.png" alt="Download the report by sample as a PDF."/>
</p:commandLink>
<p:tooltip for="cOnePdf" value="Download the report by sample as a PDF." showEffect="fade" hideEffect="fade" rendered="#{sampleExportController.selectedSample.sampleType eq 'Soil'}"/>
</p:column>
<p:column style="text-align: center;">
<p:commandLink ajax="false" id="cMultiPdf" onclick="PrimeFaces.monitorDownload(start, stop)" actionListener="#{sampleExportController.generateMultiSampleReportPDF}">
<p:fileDownload value="#{sampleExportController.file}" />
<p:graphicImage value="./resources/images/pdf.png" alt="Download the report by lab Number as a PDF."/>
</p:commandLink>
<p:tooltip for="cOnePdf" value="Download the report by lab Number as a PDF." showEffect="fade" hideEffect="fade" />
</p:column>
</p:row>
</p:panelGrid>
+ random ending tags
<h:form>
sollten wrap <p:dialog>
, nicht die andere Weise herum. Sie können auch nur die Bohne als @ViewScoped
. Nur der Hinweis: Netbeans update ist nicht das problem. JSF und grundsätzlich alle Java-code sind IDE unabhängig.Ich habe versucht, schalten Sie den dialog und bilden um und jetzt bin ich immer eine Fehlermeldung für die Seite.
Und der Fehler ist...
Die person, die dieses system geschaffen hat, es so, wenn es ein Fehler Sie gehen zu einem generischen Es war ein Fehler-Seite es gibt nicht die Besonderheiten, die es nur sagt, es gab einen unerwarteten Fehler.
Nicht Ihre IDE-Protokoll die Ausnahme? Wenn dem so ist, Bearbeiten die post und fügen Sie den stacktrace oder Ausnahme-Nachricht.
InformationsquelleAutor SkaiiNyght | 2014-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem befindet sich in Ihrem dialog. Es gibt
p:commandButton
, die Folgendes enthält:Sollte es
update=":mainForm:DTsamples"
da müssen Sie die Referenz-id und nicht die widgetVar. Habt einen schönen Tag!InformationsquelleAutor rion18