This content has been marked as final.
Show 4 replies
-
1. Re: a4j:support event=
andrei_exadel Feb 26, 2009 9:11 AM (in response to tomek_0021)Hi.
Cannot reproduce your problem. I checked your code on 3.3.0 GA, facelets, JSF 1.2. ActionListener is called after 'Clear all' button clicked.
Can you please post more info: full page or bean's code. -
2. Re: a4j:support event=
tomek_0021 Feb 26, 2009 9:42 AM (in response to tomek_0021)template page in facelets:
<?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:c="http://java.sun.com/jstl/core_rt" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <head> <link rel="STYLESHEET" type="text/css" href="/inwentaryzacjaWebApp/css/common.css" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>ITeam SA - Inwentaryzacja sprzętu i oprogramowania</title> </head> <body> <div id="top"> <f:view> <f:loadBundle basename="conf.global_message" var="globalMsg"/> <rich:panel id="mainPanel" style="padding: 0px; border: 1px solid #ababab; width: 1000px;" headerClass="outpanelHeader"> <div id="NAGLOWEK"> <h:form> <rich:toolBar itemSeparator="Line" width="100%;"> <rich:toolBarGroup location="left" itemSeparator="None"> <h:outputText value="ITeam SA - System do inwentaryzacji sprzętu i oprogramowania" /> </rich:toolBarGroup> <rich:toolBarGroup rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik != null}" location="right" itemSeparator="None"> <h:outputText value="#{inwentaryzacjaBean.zalogowanyUzytkownik.imie} #{inwentaryzacjaBean.zalogowanyUzytkownik.nazwisko} "/> </rich:toolBarGroup> <rich:toolBarGroup location="right" itemSeparator="Line"> <h:outputText value="#{inwentaryzacjaBean.currentDate}"> <f:convertDateTime pattern="EEEE, dd MMMM yyyy" /> </h:outputText> <h:commandLink rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik != null}" value="Wyloguj" action="#{inwentaryzacjaBean.wyloguj}" immediate="true" /> <h:commandLink rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik == null}" value="Zaloguj" action="login" immediate="true" /> </rich:toolBarGroup> </rich:toolBar> </h:form> <h:outputText styleClass="alarma" rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik == null}" value="Nie masz uprawnień do korzystania z aplikacji, zaloguj się!" /> <br /> <h:panelGrid rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik != null}" columns="1" columnClasses="do_gory" styleClass="menu"> <h:form> <ul class="menu_poziome"> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toPracownicy}" rendered="#{inwentaryzacjaBean.pracownicy and inwentaryzacjaBean.aktualnaZakladka != 'pracownicy'}" > Pracownicy </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toPracownicy}" rendered="#{inwentaryzacjaBean.pracownicy and inwentaryzacjaBean.aktualnaZakladka == 'pracownicy'}" > Pracownicy </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toCzesci}" rendered="#{inwentaryzacjaBean.czesci and inwentaryzacjaBean.aktualnaZakladka != 'czesci'}" > Części </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toCzesci}" rendered="#{inwentaryzacjaBean.czesci and inwentaryzacjaBean.aktualnaZakladka == 'czesci'}" > Części </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toKomputery}" rendered="#{inwentaryzacjaBean.komputery and inwentaryzacjaBean.aktualnaZakladka != 'komputery'}" > Komputery </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toKomputery}" rendered="#{inwentaryzacjaBean.komputery and inwentaryzacjaBean.aktualnaZakladka == 'komputery'}" > Komputery </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toLicencje}" rendered="#{inwentaryzacjaBean.licencje and inwentaryzacjaBean.aktualnaZakladka != 'licencje'}"> Licencje </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toLicencje}" rendered="#{inwentaryzacjaBean.licencje and inwentaryzacjaBean.aktualnaZakladka == 'licencje'}"> Licencje </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toOprogramowanie}" rendered="#{inwentaryzacjaBean.oprogramowanie and inwentaryzacjaBean.aktualnaZakladka != 'oprogramowanie'}" > Oprogramowanie </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toOprogramowanie}" rendered="#{inwentaryzacjaBean.oprogramowanie and inwentaryzacjaBean.aktualnaZakladka == 'oprogramowanie'}" > Oprogramowanie </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toZasoby}" rendered="#{inwentaryzacjaBean.zasoby and inwentaryzacjaBean.aktualnaZakladka != 'zasoby'}" > Zasoby </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toZasoby}" rendered="#{inwentaryzacjaBean.zasoby and inwentaryzacjaBean.aktualnaZakladka == 'zasoby'}" > Zasoby </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toOsoby}" rendered="#{inwentaryzacjaBean.osoby and inwentaryzacjaBean.aktualnaZakladka != 'osoby'}" > Osoby zewnętrzne </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toOsoby}" rendered="#{inwentaryzacjaBean.osoby and inwentaryzacjaBean.aktualnaZakladka == 'osoby'}" > Osoby zewnętrzne </h:commandLink> </li> <li class="menu_poziome"> <h:commandLink action="#{inwentaryzacjaBean.toUprawnienia}" rendered="#{inwentaryzacjaBean.uprawnienia and inwentaryzacjaBean.aktualnaZakladka != 'uprawnienia'}"> Uprawnienia </h:commandLink> <h:commandLink styleClass="selected" action="#{inwentaryzacjaBean.toUprawnienia}" rendered="#{inwentaryzacjaBean.uprawnienia and inwentaryzacjaBean.aktualnaZakladka == 'uprawnienia'}"> Uprawnienia </h:commandLink> </li> </ul> </h:form> </h:panelGrid> </div> <div id="LEWA"> <h:panelGrid rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik != null}" columns="1" columnClasses="do_gory" styleClass="menu"> <ui:insert name="leftBody">Default Body</ui:insert> </h:panelGrid> </div> <div id="SRODEK" /> <div id="PRAWA"> <h:panelGrid rendered="#{inwentaryzacjaBean.zalogowanyUzytkownik != null}" columns="1" columnClasses="do_gory" styleClass="menu"> <ui:insert name="rightBody">Default Body</ui:insert> </h:panelGrid> </div> <div id="STOPKA"><span style="text-align:center"> </span></div> </rich:panel> </f:view> </div> </body> </html>
page using template with file upload:<?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"> <ui:composition 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:c="http://java.sun.com/jstl/core_rt" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <ui:composition template="/template.xhtml"> <ui:define name="leftBody"> <h:form id="licencjeListaPanel" rendered="#{inwentaryzacjaBean.licencje}"> <h:panelGrid columns="2"> <h:outputText styleClass="iLabel" value="Wybierz program" /> <h:selectOneMenu styleClass="iSelect" value="#{licencjaBean.licencjaSearchForm.idOprogramowania}" > <f:selectItem itemLabel="-- Wszystkie --" itemValue="-1" /> <f:selectItems value="#{licencjaBean.licencjaForm.programy}" /> </h:selectOneMenu> <h:outputText styleClass="iLabel" value="Termin wygasania" /> <rich:calendar value="#{licencjaBean.licencjaSearchForm.terminWygasania}" locale="US" popup="true" datePattern="yyyy-MM-dd" showApplyButton="false" cellWidth="24px" cellHeight="22px" /> <h:outputText styleClass="iLabel" value="Info" /> <h:inputText maxlength="64" styleClass="iText" label="Info" value="#{licencjaBean.licencjaSearchForm.info}" /> <h:outputText styleClass="iLabel" value="Ilość licencji" /> <h:inputText maxlength="8" styleClass="iText" label="IloscLicencji" value="#{licencjaBean.licencjaSearchForm.ilosc}" > <f:convertNumber type="number" maxIntegerDigits="4" integerOnly="true"/> </h:inputText> <f:facet name="footer"> <a4j:commandButton reRender="listaLicencjiScroller,licencjeLista" styleClass="iBtn" actionListener="#{licencjaBean.wyszukajLicencje}" value="Szukaj" /> </f:facet> </h:panelGrid> <rich:spacer styleClass="spacer"/> <rich:dataTable id="licencjeLista" onRowMouseOver="this.style.backgroundColor='#F8F8F8'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" rowClasses="cur" rows="10" value="#{licencjaBean.listaLicencji}" var="licencja" styleClass="richTable"> <rich:column sortBy="#{licencja.idLicencji}"> <f:facet name="header"> <h:outputText value="Id" /> </f:facet> <h:outputText value="#{licencja.idLicencji}" /> </rich:column> <rich:column sortBy="#{licencja.oprogramowanie.nazwa}" filterBy="#{licencja.oprogramowanie.nazwa}" filterEvent="onkeyup"> <f:facet name="header"> <h:outputText value="Nazwa programu" /> </f:facet> <h:outputText value="#{licencja.oprogramowanie.nazwa}" /> </rich:column> <rich:column sortBy="#{licencja.oprogramowanie.wersja}"> <f:facet name="header"> <h:outputText value="Wersja" /> </f:facet> <h:outputText value="#{licencja.oprogramowanie.wersja}" /> </rich:column> <rich:column sortBy="#{licencja.oprogramowanie.typLicencji}"> <f:facet name="header"> <h:outputText value="Typ licencji" /> </f:facet> <h:outputText value="#{licencja.oprogramowanie.typLicencji}" > <f:converter converterId="kategoriaConverter"/> </h:outputText> </rich:column> <rich:column sortBy="#{licencja.terminWygasania}"> <f:facet name="header"> <h:outputText value="Wygasa" /> </f:facet> <h:outputText value="#{licencja.terminWygasania}" > <f:convertDateTime type="date" dateStyle="medium" pattern="yyyy-MM-dd"/> </h:outputText> </rich:column> <rich:column sortBy="#{licencja.ilosc}" style="text-align:right"> <f:facet name="header"> <h:outputText value="Wolne" /> </f:facet> <h:outputText value="#{licencja.ilosc}" > <f:converter converterId="pustyConverter"/> </h:outputText> </rich:column> <rich:column sortBy="#{licencja.iloscWykorzystanych}" style="text-align:right" > <f:facet name="header"> <h:outputText value="Zajęte" /> </f:facet> <h:outputText value="#{licencja.iloscWykorzystanych}" /> </rich:column> <a4j:support reRender="licencjeSzczegolyPanel" event="onRowClick" > <a4j:actionparam name="id" assignTo="#{licencjaBean.licencjaForm.idLicencji}" value="#{licencja.idLicencji}"/> <a4j:actionparam name="ilosc" assignTo="#{licencjaBean.licencjaForm.ilosc}" value="#{licencja.ilosc}"/> <!--<a4j:actionparam name="termin" assignTo="#{licencjaBean.licencjaForm.terminWygasania}" value="#{licencja.terminWygasania}"/>--> <a4j:actionparam name="nrLicencji" assignTo="#{licencjaBean.licencjaForm.numerLicencji}" value="#{licencja.numerLicencji}"/> <a4j:actionparam name="kluczNapis" assignTo="#{licencjaBean.licencjaForm.kluczNapis}" value="#{licencja.kluczNapis}"/> <!--<a4j:actionparam name="kluczPlik" assignTo="#{licencjaBean.licencjaForm.kluczPlik}" value="#{licencja.kluczPlik}"/>--> <a4j:actionparam name="nazwaPliku" assignTo="#{licencjaBean.licencjaForm.nazwaPliku}" value="#{licencja.nazwaPliku}"/> <a4j:actionparam name="nrFaktury" assignTo="#{licencjaBean.licencjaForm.nrFaktury}" value="#{licencja.nrFaktury}"/> <a4j:actionparam name="info" assignTo="#{licencjaBean.licencjaForm.info}" value="#{licencja.info}"/> <a4j:actionparam name="idOprogramowania" assignTo="#{licencjaBean.licencjaForm.idOprogramowania}" value="#{licencja.idOprogramowania}"/> <a4j:actionparam name="stan" assignTo="#{licencjaBean.stanLicencji}" value="wybrano"/> </a4j:support> </rich:dataTable> <table width="100%"> <tr> <td align="left"> <a4j:commandButton reRender="licencjeListaPanel,licencjeSzczegolyPanel" styleClass="iBtn" actionListener="#{licencjaBean.dodajLicencje}" value="Dodaj" rendered="#{licencjaBean.stanLicencji != 'dodawanie' and inwentaryzacjaBean.licencjeZapis}"/> </td> <td align="right"> <rich:datascroller id="listaLicencjiScroller" align="right" for="licencjeLista" maxPages="20" /> </td> </tr> </table> </h:form> </ui:define> <ui:define name="rightBody"> <h:panelGrid id="licencjeSzczegolyPanel" > <rich:panel header="Edycja danych licencji" rendered="#{licencjaBean.stanLicencji != 'zaden'}"> <a4j:include viewId="/facets/soft/dodajLicencje.xhtml" /> </rich:panel> </h:panelGrid> </ui:define> </ui:composition> </ui:composition>
page "/facets/soft/dodajLicencje.xhtml":<?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"> <ui:composition 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:c="http://java.sun.com/jstl/core_rt" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:t="http://myfaces.apache.org/tomahawk"> <!--<h:form id="dodajLicencjeForm" enctype="multipart/form-data">--> <a4j:form id="dodajLicencjeForm" enctype="multipart/form-data" ajaxSubmit="true" ajaxSingle="true" > <rich:messages styleClass="errorMessages"/> <h:dataTable rendered="#{licencjaBean.licencjaForm.komunikatyWalidacji != null and !empty licencjaBean.licencjaForm.komunikatyWalidacji}" value="#{licencjaBean.licencjaForm.komunikatyWalidacji}" var="komunikat"> <h:column> <h:outputText styleClass="error" value="#{komunikat}" /> </h:column> </h:dataTable> <div id="content"> <h:panelGrid id="tabForm" columns="2"> <h:outputText styleClass="iLabel" value="Wybierz program" /> <h:selectOneMenu styleClass="iSelect" id="lista" value="#{licencjaBean.licencjaForm.idOprogramowania}" > <f:selectItems value="#{licencjaBean.licencjaForm.programy}" /> </h:selectOneMenu> <h:outputText styleClass="iLabel" value="Termin wygasania" /> <rich:calendar value="#{licencjaBean.licencjaForm.terminWygasania}" id="calendar" popup="true" datePattern="yyyy-MM-dd" showApplyButton="false" cellWidth="24px" cellHeight="22px"/> <h:outputText styleClass="iLabel" value="Numer licencji " /> <h:inputText maxlength="64" styleClass="iText" label="NumerLicencji" id="numerLicencji" value="#{licencjaBean.licencjaForm.numerLicencji}"/> <h:outputText styleClass="iLabel" value="Nr faktury" /> <h:inputText maxlength="64" styleClass="iText" label="NrFaktury" id="nrFaktury" value="#{licencjaBean.licencjaForm.nrFaktury}" /> <h:outputText styleClass="iLabel" value="Info" /> <h:inputTextarea styleClass="iTextArea" label="Info" id="info" value="#{licencjaBean.licencjaForm.info}" > <f:validateLength maximum="1024"/> </h:inputTextarea> <h:outputText styleClass="iLabel" value="Ilość licencji (<0 jeśli bez)" /> <h:inputText maxlength="8" styleClass="iText" label="IloscLicencji" id="iloscLicencji" value="#{licencjaBean.licencjaForm.ilosc}" > </h:inputText> <h:outputText styleClass="iLabel" value="Klucz (napis)"/> <h:inputText maxlength="64" styleClass="iText" label="KluczNapis" id="kluczNapis" value="#{licencjaBean.licencjaForm.kluczNapis}"/> <h:outputText styleClass="iLabel" value="Plik z kluczem" rendered="#{licencjaBean.licencjaForm.fileEmpty}"/> <rich:fileUpload maxFilesQuantity="1" id="plik" listHeight="58px" listWidth="300px" addControlLabel="Dodaj plik..." clearAllControlLabel="Wyczyść wszystko" clearControlLabel="Wyczyść" stopEntryControlLabel="Stop" uploadControlLabel="Pobierz plik" autoclear="false" immediateUpload="false" fileUploadListener="#{licencjaBean.fileUploadListener}" rendered="#{licencjaBean.licencjaForm.fileEmpty}" immediate="true" uploadData="#{licencjaBean.licencjaForm.listaPlikow}"> <a4j:support actionListener="#{licencjaBean.licencjaForm.usunPlik}" immediate="true" event="onclear" reRender="plik" > <a4j:actionparam name="plik" assignTo="#{licencjaBean.licencjaForm.kluczPlik}" value="null"/> </a4j:support> </rich:fileUpload> <h:outputText styleClass="iLabel" value="Pobierz plik" rendered="#{!licencjaBean.licencjaForm.fileEmpty}"/> <h:panelGrid columns="1" rendered="#{!licencjaBean.licencjaForm.fileEmpty}"> <h:outputLink value="/inwentaryzacjaWebApp/plik.upload" rendered="#{!licencjaBean.licencjaForm.fileEmpty}"> <h:outputText styleClass="iLabel" value="#{licencjaBean.licencjaForm.nazwaPliku}" /> <f:param name="idLicencji" value="#{licencjaBean.licencjaForm.idLicencji}" /> </h:outputLink> <a4j:commandLink actionListener="#{licencjaBean.licencjaForm.usunPlik}" rendered="#{!licencjaBean.licencjaForm.fileEmpty}" reRender="tabelkaZPlikiem" limitToList="true" eventsQueue="kolejkaDlaLicencji"> <h:outputText value="(usuń)" /> </a4j:commandLink> </h:panelGrid> <f:facet name="footer"> <h:panelGrid rendered="#{inwentaryzacjaBean.licencjeZapis}" columns="3"> <a4j:commandButton reRender="licencjeListaPanel,licencjeSzczegolyPanel" styleClass="iBtn" actionListener="#{licencjaBean.dodajLicencje}" value="Dodaj" rendered="#{licencjaBean.stanLicencji == 'dodawanie'}"/> <a4j:commandButton reRender="licencjeListaPanel,licencjeSzczegolyPanel" styleClass="iBtn" actionListener="#{licencjaBean.modyfikujLicencje}" value="Zapisz" rendered="#{licencjaBean.stanLicencji == 'wybrano'}"/> <h:commandButton styleClass="iBtn" immediate="true" type="reset" value="Usuń" rendered="#{licencjaBean.stanLicencji == 'wybrano'}" id="usunButton"> <rich:componentControl for="panel" attachTo="usunButton" operation="show" event="onclick"/> </h:commandButton> <a4j:commandButton reRender="licencjeListaPanel,licencjeSzczegolyPanel" styleClass="iBtn" immediate="true" actionListener="#{licencjaBean.anulujLicencje}" value="Anuluj" rendered="#{licencjaBean.stanLicencji != 'zaden'}"/> </h:panelGrid> </f:facet> </h:panelGrid> </div> </a4j:form> <rich:modalPanel id="panel" autosized="true"> <f:facet name="header"> <h:panelGroup> <h:outputText value="Usuwanie licencji"></h:outputText> </h:panelGroup> </f:facet> <f:facet name="controls"> <h:panelGroup> <h:outputLink value="#" id="hidelinkLicencja">Zamknij</h:outputLink> <rich:componentControl for="panel" attachTo="hidebuttonLicencja,hidelinkLicencja" operation="hide" event="onclick"/> </h:panelGroup> </f:facet> <h:outputText value="Czy na pewno chcesz usunąć licencje #{sprzetBean.czescKomputeraForm.nazwa}?"></h:outputText> <h:outputText rendered="#{!licencjaBean.listaKomputerowLicencjiPusta}"> <br/> Następujące komputery zostaną pozbawione licencji: <br/> <br/> </h:outputText> <rich:dataTable id="komputeryLicencjiLista" rowClasses="cur" rows="20" value="#{licencjaBean.listaKomputerowLicencji}" var="komputer" rendered="#{!licencjaBean.listaKomputerowLicencjiPusta}"> <rich:column> <f:facet name="header"> <h:outputText value="Nazwa" /> </f:facet> <h:outputText value="#{komputer.nazwa}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="IP" /> </f:facet> <h:outputText value="#{komputer.ip}" /> </rich:column> </rich:dataTable> <h:form> <a4j:commandButton reRender="licencjeSzczegolyPanel,licencjeListaPanel" styleClass="iBtn" actionListener="#{licencjaBean.usunLicencje}" value="Usuń" /> <a4j:commandButton styleClass="iBtn" type="reset" immediate="true" value="Anuluj" id="hidebuttonLicencja"/> </h:form> </rich:modalPanel> </ui:composition>
and code of backBean:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package pl.iteam.inwentaryzacja.beans; import java.io.IOException; import java.util.List; import javax.faces.event.ActionEvent; import org.apache.log4j.Logger; import pl.iteam.inwentaryzacja.forms.LicencjaForm; import pl.iteam.inwentaryzacja.forms.OprogramowanieForm; import pl.iteam.inwentaryzacjaconnector.beans.Licencja; import pl.iteam.inwentaryzacjaconnector.beans.Oprogramowanie; import pl.iteam.inwentaryzacjaconnector.client.OprogramowanieService; import pl.iteam.inwentaryzacjaconnector.client.ServiceException; import pl.iteam.inwentaryzacjaconnector.client.ServicesFactory; /** * * @author Tomasz */ public class LicencjaBean { OprogramowanieForm oprogramowanieForm; OprogramowanieForm oprogramowanieSearchForm; LicencjaForm licencjaForm; LicencjaForm licencjaSearchForm; OprogramowanieService oprogramowanieService; List listaOprogramowania = null; List listaLicencji = null; List listaKomputerowLicencji = null; List listaLicencjiOprogramowania = null; String stanOprogramowania = "zaden"; String stanLicencji = "zaden"; private static Logger logger = Logger.getLogger(LicencjaBean.class); public LicencjaBean() { oprogramowanieForm = new OprogramowanieForm(); oprogramowanieSearchForm = new OprogramowanieForm(); licencjaForm = new LicencjaForm(); licencjaSearchForm = new LicencjaForm(); pobierzLicencje(); pobierzOprogramowanie(); } public List getListaLicencjiOprogramowania() { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { listaLicencjiOprogramowania = oprogramowanieService.pobierzLicencjeDanegoOprogramowania(oprogramowanieForm.getIdOprogramowania()); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy licencji danego oprogramowania", ex); ex.printStackTrace(); } return listaLicencjiOprogramowania; } public boolean isListaLicencjiOprogramowaniaPusta() { getListaLicencjiOprogramowania(); if (listaLicencjiOprogramowania == null) { return true; } return listaLicencjiOprogramowania.size() > 0 ? false : true; } public List getListaKomputerowLicencji() { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { listaKomputerowLicencji = oprogramowanieService.pobierzKomputeryDanejLicencji(licencjaForm.getIdLicencji()); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy komputerow danej licencji", ex); ex.printStackTrace(); } return listaKomputerowLicencji; } public boolean isListaKomputerowLicencjiPusta() { getListaKomputerowLicencji(); if (listaKomputerowLicencji == null) { return true; } return listaKomputerowLicencji.size() > 0 ? false : true; } public void wyszukajOprogramowanie(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { Oprogramowanie oprogramowanie = oprogramowanieSearchForm.getOprogramowanie(); if (oprogramowanie.getKategoria().contains("Wszystkie")) { oprogramowanie.setKategoria(null); } if (oprogramowanie.getPriorytet().contains("Wszystkie")) { oprogramowanie.setPriorytet(null); } if (oprogramowanie.getTypLicencji().contains("Wszystkie")) { oprogramowanie.setTypLicencji(null); } listaOprogramowania = oprogramowanieService.pobierzOprogramowanieZFiltrem(oprogramowanie.getNazwa(), oprogramowanie.getKategoria(), oprogramowanie.getOpis(), oprogramowanie.getPriorytet(), oprogramowanie.getTypLicencji()); } catch (ServiceException ex) { System.out.println(" blad "); logger.error("Błąd przy pobieraniu listy oprogramowania", ex); ex.printStackTrace(); } } public void pobierzOprogramowanie() { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { listaOprogramowania = oprogramowanieService.pobierzOprogramowanie(); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy oprogramowania", ex); } } public void dodajOprogramowanie(ActionEvent event) { if (!stanOprogramowania.equals("dodawanie")) { stanOprogramowania = "dodawanie"; wyczyscOprogramowanie(); } else { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.dodajOprogramowanie(oprogramowanieForm.getOprogramowanie()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy dodawaniu oprogramowania", ex); } //wymuszenie pobrania nowej listy oprogramowania w panelu z licencjami licencjaForm.setProgramy(null); pobierzOprogramowanie(); anulujOprogramowanie(event); } } public void usunOprogramowanie(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.usunOprogramowanie(oprogramowanieForm.getIdOprogramowania()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy usuwaniu oprogramowania", ex); } pobierzOprogramowanie(); anulujOprogramowanie(event); } public void modyfikujOprogramowanie(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.modyfikujOprogramowanie(oprogramowanieForm.getOprogramowanie()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy modyfikowaniu oprogramowania", ex); } pobierzOprogramowanie(); anulujOprogramowanie(event); } public void anulujOprogramowanie(ActionEvent event) { stanOprogramowania = "zaden"; wyczyscOprogramowanie(); } public void wyczyscOprogramowanie() { oprogramowanieForm.setIdOprogramowania(-1); oprogramowanieForm.setKategoria(""); oprogramowanieForm.setNazwa(""); oprogramowanieForm.setOpis(""); oprogramowanieForm.setPriorytet(""); oprogramowanieForm.setTypLicencji(""); oprogramowanieForm.setWersja(""); } public void pobierzLicencje() { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { listaLicencji = oprogramowanieService.pobierzLicencje(); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy licencji", ex); } } public void wyszukajLicencje(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { Licencja licencja = licencjaSearchForm.getLicencja(); listaLicencji = oprogramowanieService.pobierzLicencjeZFiltrem(licencja); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy licencji", ex); ex.printStackTrace(); } } public void dodajLicencje(ActionEvent event) { if (!stanLicencji.equals("dodawanie")) { stanLicencji = "dodawanie"; wyczyscLicencje(); } else { boolean czy = licencjaForm.validatePuste(); if (czy) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.dodajLicencje(licencjaForm.getLicencja()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy dodawaniu licencji", ex); } pobierzLicencje(); anulujLicencje(event); } } } public void usunLicencje(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.usunLicencje(licencjaForm.getIdLicencji()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy usuwaniu licencji", ex); } pobierzLicencje(); anulujLicencje(event); } public void modyfikujLicencje(ActionEvent event) { oprogramowanieService = ServicesFactory.getOprogramowanieService(); try { oprogramowanieService.modyfikujLicencje(licencjaForm.getLicencja()); } catch (ServiceException ex) { ex.printStackTrace(); logger.error("Błąd przy modyfikowaniu licencji", ex); } pobierzLicencje(); anulujLicencje(event); } public void anulujLicencje(ActionEvent event) { stanLicencji = "zaden"; wyczyscLicencje(); } public void wyczyscLicencje() { licencjaForm.setIdLicencji(-1); licencjaForm.setIdOprogramowania(-1); licencjaForm.setIlosc(""); licencjaForm.setInfo(""); licencjaForm.setKluczNapis(""); licencjaForm.setKluczPlik(null); licencjaForm.setNazwaPliku(""); licencjaForm.setNrFaktury(""); licencjaForm.setNumerLicencji(""); licencjaForm.setTerminWygasania(null); licencjaForm.setKomunikatyWalidacji(null); } public void fileUploadListener(org.richfaces.event.UploadEvent event) throws IOException { if (event == null) { logger.warn("fileUploadListener(): null upload event"); return; } org.richfaces.model.UploadItem item = event.getUploadItem(); String fileName = item.getFileName(); int begin = fileName.lastIndexOf('\\'); begin += 1; licencjaForm.setKluczPlik(item.getData()); licencjaForm.setNazwaPliku(fileName.substring(begin)); logger.info("pobrano plik."); } public LicencjaForm getLicencjaForm() { return licencjaForm; } public void setLicencjaForm(LicencjaForm licencjaForm) { this.licencjaForm = licencjaForm; } public List getListaLicencji() { return listaLicencji; } public void setListaLicencji(List listaLicencji) { this.listaLicencji = listaLicencji; } public List getListaOprogramowania() { return listaOprogramowania; } public void setListaOprogramowania(List listaOprogramowania) { this.listaOprogramowania = listaOprogramowania; } public OprogramowanieForm getOprogramowanieForm() { return oprogramowanieForm; } public void setOprogramowanieForm(OprogramowanieForm oprogramowanieForm) { this.oprogramowanieForm = oprogramowanieForm; } public OprogramowanieForm getOprogramowanieSearchForm() { return oprogramowanieSearchForm; } public void setOprogramowanieSearchForm(OprogramowanieForm oprogramowanieSearchForm) { this.oprogramowanieSearchForm = oprogramowanieSearchForm; } public String getStanLicencji() { return stanLicencji; } public void setStanLicencji(String stanLicencji) { this.stanLicencji = stanLicencji; } public String getStanOprogramowania() { return stanOprogramowania; } public void setStanOprogramowania(String stanOprogramowania) { this.stanOprogramowania = stanOprogramowania; } public LicencjaForm getLicencjaSearchForm() { return licencjaSearchForm; } public void setLicencjaSearchForm(LicencjaForm licencjaSearchForm) { this.licencjaSearchForm = licencjaSearchForm; } }
and finally code of formBean:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package pl.iteam.inwentaryzacja.forms; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; import org.apache.log4j.Logger; import pl.iteam.inwentaryzacja.beans.LicencjaBean; import pl.iteam.inwentaryzacjaconnector.beans.Licencja; import pl.iteam.inwentaryzacjaconnector.beans.Oprogramowanie; import pl.iteam.inwentaryzacjaconnector.client.OprogramowanieService; import pl.iteam.inwentaryzacjaconnector.client.ServiceException; import pl.iteam.inwentaryzacjaconnector.client.ServicesFactory; /** * * @author Tomasz */ public class LicencjaForm { int idLicencji; String ilosc; Date terminWygasania; String numerLicencji; String kluczNapis; byte[] kluczPlik; String nazwaPliku; String nrFaktury; String info; int idOprogramowania; List programy; Collection listaPlikow; List<String> komunikatyWalidacji = null; private static Logger logger = Logger.getLogger(LicencjaForm.class); public LicencjaForm() { listaPlikow = new ArrayList(); } public void usunPlik(ActionEvent event) { nazwaPliku = null; kluczPlik = null; listaPlikow = new ArrayList(); } public boolean validatePuste() { komunikatyWalidacji = new ArrayList<String>(); if (ilosc == null || ilosc.isEmpty()) { komunikatyWalidacji.add(" Ilość jest pusta."); } else { try { Integer.parseInt(ilosc); } catch(Exception e) { komunikatyWalidacji.add(" Ilość musi być liczbą całkowitą."); } } if (numerLicencji == null || numerLicencji.isEmpty()) { komunikatyWalidacji.add(" Numer licencji jest pusty."); } if (nrFaktury == null || nrFaktury.isEmpty()) { komunikatyWalidacji.add(" Nr faktury jest pusty."); } if (info == null || info.isEmpty()) { komunikatyWalidacji.add(" Info jest pusty."); } if (komunikatyWalidacji.size() > 0) { return false; } else { return true; } } public void setProgramy(List programy) { this.programy = programy; } public Collection<SelectItem> getProgramy() { if (programy == null) { List listaProgramow = new ArrayList(); programy = new ArrayList(); OprogramowanieService pracownikService = ServicesFactory.getOprogramowanieService(); try { listaProgramow = pracownikService.pobierzOprogramowanie(); } catch (ServiceException ex) { logger.error("Błąd przy pobieraniu listy pracownikow", ex); ex.printStackTrace(); } for (Iterator iter = listaProgramow.iterator(); iter.hasNext();) { Oprogramowanie program = (Oprogramowanie) iter.next(); programy.add(new SelectItem(program.getIdOprogramowania(), program.getNazwa() + " " + program.getWersja())); } } return programy; } public Licencja getLicencja() { Licencja licencja = new Licencja(); licencja.setIdLicencji(idLicencji); licencja.setIdOprogramowania(idOprogramowania); try { licencja.setIlosc(Integer.parseInt(ilosc)); } catch (Exception e) { licencja.setIlosc(-1); } licencja.setInfo(info); licencja.setKluczNapis(kluczNapis); licencja.setKluczPlik(kluczPlik); licencja.setNazwaPliku(nazwaPliku); licencja.setNrFaktury(nrFaktury); licencja.setNumerLicencji(numerLicencji); licencja.setTerminWygasania(terminWygasania); return licencja; } public boolean isFileEmpty() { if (nazwaPliku != null && !nazwaPliku.equals("") && !nazwaPliku.equals("null")) { return false; } else { return true; } } public int getIdLicencji() { return idLicencji; } public void setIdLicencji(int idLicencji) { this.idLicencji = idLicencji; LicencjaBean licencjaBean = (LicencjaBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("licencjaBean"); for (Iterator iter = licencjaBean.getListaLicencji().iterator(); iter.hasNext();) { Licencja licencja = (Licencja) iter.next(); if (licencja.getIdLicencji() == idLicencji) { terminWygasania = licencja.getTerminWygasania(); return; } } } public int getIdOprogramowania() { return idOprogramowania; } public void setIdOprogramowania(int idOprogramowania) { this.idOprogramowania = idOprogramowania; } public String getIlosc() { return ilosc; } public void setIlosc(String ilosc) { this.ilosc = ilosc; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public String getKluczNapis() { return kluczNapis; } public void setKluczNapis(String kluczNapis) { this.kluczNapis = kluczNapis; } public byte[] getKluczPlik() { return kluczPlik; } public void setKluczPlik(byte[] kluczPlik) { this.kluczPlik = kluczPlik; } public String getNrFaktury() { return nrFaktury; } public void setNrFaktury(String nrFaktury) { this.nrFaktury = nrFaktury; } public String getNumerLicencji() { return numerLicencji; } public void setNumerLicencji(String numerLicencji) { this.numerLicencji = numerLicencji; } public Date getTerminWygasania() { return terminWygasania; } public void setTerminWygasania(Date terminWygasania) { this.terminWygasania = terminWygasania; } public String getNazwaPliku() { return nazwaPliku; } public void setNazwaPliku(String nazwaPliku) { this.nazwaPliku = nazwaPliku; } public Collection getListaPlikow() { return listaPlikow; } public void setListaPlikow(Collection listaPlikow) { this.listaPlikow = listaPlikow; } public List<String> getKomunikatyWalidacji() { return komunikatyWalidacji; } public void setKomunikatyWalidacji(List<String> komunikatyWalidacji) { this.komunikatyWalidacji = komunikatyWalidacji; } }
web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>com.sun.faces.validateXml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>facelets.SKIP_COMMENTS</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> <param-value>com.sun.facelets.FaceletViewHandler</param-value> </context-param> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> <init-param> <param-name>createTempFiles</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>maxRequestSize</param-name> <param-value>10000000</param-value> </init-param> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter> <filter-name>facelets</filter-name> <filter-class>com.sun.facelets.webapp.FaceletFilter</filter-class> </filter> <filter-mapping> <filter-name>facelets</filter-name> <url-pattern>*.xhtml</url-pattern> </filter-mapping> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <servlet> <servlet-name>Upload Servlet</servlet-name> <servlet-class>pl.iteam.inwentaryzacja.utils.UploadServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Upload Servlet</servlet-name> <url-pattern>*.upload</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file> </welcome-file-list> </web-app>
thats all:)
BIG thanks for so fast reply from you:) -
3. Re: a4j:support event=
andrei_exadel Feb 27, 2009 7:08 AM (in response to tomek_0021)Great thanks to you for so much of code :)
The problem caused by fileUpload becomes not-rendered after file was submitted.
See isEmpty method of you code. If some name exists in the bean this method return false. So a4j:support cannot be processed inside not-rendered component.
Dont change rendered attribute of fileupload inside fileUploadListener if you want to execute some event action with it. -
4. Re: a4j:support event=
tomek_0021 Feb 27, 2009 8:11 AM (in response to tomek_0021)BIG, GREAT thanks for your help.
It works! :-D