[Java lista] JSF alapprobléma

Andras Dobrosi andris at freemail.hu
2007. Nov. 8., Cs, 09:53:57 CET


Szia!

Ha nem vagy elegedett a default Integer konverter mukodesevel akkor
definiald at, pl igy::

public class MyIntegerConverter extends IntegerConverter {
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String
arg2) {
        System.out.println("arg2=" + arg2);
        ValueExpression defaultValueExpression = arg1
                .getValueExpression("value");
        ELContext elCtx = arg0.getELContext();
        if((arg2.equals("") /*|| arg2.equals("legyen null") || arg2
                .equals("null"))*/) {
            arg2 = null;
        }
        if (defaultValueExpression.getValue(elCtx) != null
                && arg2 == null) {
            defaultValueExpression.setValue(elCtx, null);
        }
        return super.getAsObject(arg0, arg1, arg2);
    }

    public String getAsString(FacesContext arg0, UIComponent arg1, Object
arg2) {
        return super.getAsString(arg0, arg1, arg2);
    }
}

Ne felejtsd ki a faces-config-bol:

    <managed-bean>
        <managed-bean-name>bean</managed-bean-name>
        <managed-bean-class>MyBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <converter>
      <converter-for-class>java.lang.Integer</converter-for-class>
      <converter-class>mypack.myconverter.MyIntegerConverter</converter-class>

    </converter>

Udv.,
Andris

On Nov 8, 2007 12:06 AM, Keresztes József <jkeresztes at vati.hu> wrote:

> Sziasztok !
>
> Mivel több JSF verzióval, több fejlesztőeszközzel is kipróbáltam a dolgot,
> de egyik faces-config.xml -lel sem működik, mindegy melyiket másolom.
> Amúgy a fura az hogy mivel kicsit már beleástam a JSF működésébe,
> érthetetlen ez a működés ugyanis: egy input mező mögött egy UIInput húzódik
> meg (a view egy eleme). A felhasználó submit-ol, ekkor az érték az UIInput
> "submitted value"-ba kerül. Amennyiben pedig a conversion és a validation is
> sikeres akkor a "local value" is megkapja a megfelelő tartalmat. Jelen
> esetünkben egy null kerül be mint submitted value. Namost, ha a form
> legalább 1 eleménél konverziós vagy validációs hiba lép fel a JSF-nek kutya
> kötelessége lenne a submitted value-ből visszamásolni a form mezőjébe az
> értéket hogy a felhasználó javíthassa. Ez működik is ha a bean-ben egy
> String típusú elemre hivatkozunk, működik ha Integer a típus de a mezőben
> van bármilyen tartalom, de ha a mezőből kiürítette az adatot a user és a
> form nem valid, a JSF ezt a mezőt a bean-ből tölti fel. Miért ???
> Illetve ha required="true" van a mezőre akkor nem nyúl a bean-hez. (Mert
> az már tényleg vicces lenne hogy egy üres mezőre kiírja hogy required, de
> közben beletöltene egy numerikus adatot).
> Ha nem jól tudom a működést, javítsatok ki !
>
> Ha ezen nem lehet segíteni akkor mi a teendő ?
> 1. A bean-ben minden elem String, nem használok Integer-t, Date-t,...
> 2. Sosem használok session-scope bean-eket, mert ilyenkor a háttérben
>   (az űrlap elküldésekor) nincs bean amiből elő tudna szedni adatot.
> 3. Szivatom a felhasználót, ez így működik és kész.
> Szerintem egyik sem normális megoldás a háromból.
>
> A faces-config.xml:
>
>
> <?xml version='1.0' encoding='UTF-8'?>
> <!DOCTYPE faces-config PUBLIC
>  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
>  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd <
> http://java.sun.com/dtd/web-facesconfig_1_1.dtd> ">
> <faces-config>
>  <!-- navigations -->
>  <navigation-rule>
>    <navigation-case>
>      <from-outcome>ok</from-outcome>
>      <to-view-id>/ok.jsp</to-view-id>
>    </navigation-case>
>  </navigation-rule>
>  <navigation-rule>
>    <navigation-case>
>      <from-outcome>valid_feladat</from-outcome>
>      <to-view-id>/valid_feladat.jsp</to-view-id>
>    </navigation-case>
>  </navigation-rule>
>  <!-- beans -->
>  <managed-bean>
>    <managed-bean-name>bean</managed-bean-name>
>    <managed-bean-class>main.Bean</managed-bean-class>
>    <managed-bean-scope>session</managed-bean-scope>
>  </managed-bean>
> </faces-config>
>
>
> ________________________________
>
> Feladó: javalist-bounces at javagrund.hu meghatalmazó: Andras Dobrosi
> Küldve: 07-11-07, Sze 17:35
> Címzett: javalist at javagrund.hu
> Tárgy: Re: [Java lista] JSF alapprobléma
>
>
> Szia Joe!
>
> Megmutatnad a faces-config.xml-ed?
>
> Udv.,
> Andris
>
>
> On Nov 7, 2007 4:39 PM, Keresztes József <jkeresztes at vati.hu> wrote:
>
>
>        Sziasztok !
>
>        Mostanában elkezdtem foglalkozni JavaServer Faces-zel. Össze is
> dobtam egy mini alkalmazást, és aztán beleütköztem egy alapvető problémába,
> amire azt hittem hogy bug, de kiderült hogy az 1.1 és az 1.2 is így
> működik. Egyszerűen nem akarom elhinni hogy ezt így akarták a JSF fejlesztői
> !
>
>        Arról van szó hogy ha egy űrlapot hibásan töltök ki akkor a submit
> gomb után VÁLTOZATLANUL kéne visszakapnom az űrlapot, és a mezők mellé/alá a
> hibaüzeneteket.
>        De ez nem így működik, egyes mezők tartalma felülíródik. A
> felhasználó miért nem azt kapja vissza amit begépelt ?
>
>        A jsp lapon:
>
>        <h:inputText value="#{bean.field1}" />
>        <h:inputText value="#{bean.field2}" required="true" />
>
>        A hozzátartozó session-scope bean-ben pedig field1, és field2
> típusa is Integer,
>        és a bean konstruktora töltse fel mindkét mezőt egy nem null
> értékkel.
>
>        Amikor a jsp lap bejön akkor ugye mindkét mezőben látom az értéket.
> Most kitörlöm mindkét mezőt, lenyomom a submitot, a field2-re jön a
> hibaüzenet és a field1-be pedig visszatölti a bean-ből egy régi tartalmat.
> Di miért ? Miért vágja felül a user által megadott (üres) tartalmat ? Itt az
> alapműködés sérül.
>        A kérdésemet más fórumon is feltettem, értelmes választ nem kaptam,
> gondoltam hátha van köztetek aki JSF-fel foglalkozik, ebbe az alapproblémába
> bele kellett hogy ütközzön.
>
>        Üdv, Joe
>
>
>
>
>
>
>        _______________________________________________
>        Javalist mailing list
>        Javalist at javagrund.hu
>        http://javagrund.hu/mailman/listinfo/javalist
>
>
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20071108/2bf2d158/attachment.html 


További információk a(z) Javalist levelezőlistáról