[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