Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116

    [JSF] Message Bundle dichiarato globalmente

    Sto seguendo tale tutorial:

    http://www.ibm.com/developerworks/ja.../section4.html

    Nel quale ad un certo punto mi dice che è possibile dichiarare un message bundle globale nel faces-config.xml in questo modo:

    codice:
    <application>
            <message-bundle>messages</message-bundle>
        </application>
    il file contiene soltanto:

    codice:
    javax.faces.component.UIInput.REQUIRED_detail=required
    javax.faces.converter.IntegerConverter.INTEGER_detail=not a valid number
    e serve a sovrascrivere gli errori di default del sistema.

    Ora, il problema è questo:
    dove posiziono il file messages.properties?
    è obbligatoria l'estensione .properties?

    Perchè, posizionandolo dentro WebContent, quando eseguo l'istruzione per far comparire il messaggio la console ritorna:

    INFO: resource bundle messages could not be found

    ho provato a cambiare posizione, mettere e togliere il .properties dal faces-config.xml, mettere e togliere il .properties dal file, modificare il percorso ma non è servito a nulla...

    Sto usando eclipse e faccio le prove sul server avviato da dentro l'ide..

  2. #2
    Ciao Verce, il file message bundle va messo dentro un package nei sorgenti java. Poi nel facesConfig gli va passato in questo modo
    codice:
    <application>
    <resource-bundle>
       <base-name><TUO PACKAGE>.Messages_Custom</base-name>
       <var>msg</var>
      </resource-bundle>
      <message-bundle><TUO PACKAGE>.Messages_Custom</message-bundle>
     </application>
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Grazie per la risposta!

    La cosa strana è che ho scoperto che eclipse non sempre (non so da cosa dipenda) permette di trascinare sui package file diversi dai .java.. Ora ci sono riuscito e in effetti non compare più il mesasggio di info!
    Tuttavia ancora non sovrascrive i messaggi di errore.. devo capire perchè


    Intanto lancio un altro appello di aiuto!
    Sempre seguendo quel tutorial ad un certo punto ho aggiunto nell'head:
    codice:
    <link rel="stylesheet" type="text/css"
              href="<%=request.getContextPath()%>/css/main.css" />
    che nella pagina viene tradotto in: "Calculator/css/main.css" (e il file si torva proprio lì)

    la mia gerarchia di cartelle è la seguente:
    codice:
    Calculator
    +- build (vuota)
    +- css
    +- resources (vuota)
    +- WebContent
       +- META-INF
       +- pages
       +- WEB-INF
          +- lib
    mentre il main.css:
    codice:
    oddRow {
      background-color: white;
    }
    
    evenRow {
      background-color: silver;
    }
    
    formGrid {
      border: solid #000 3px;
      width: 400px;
    }
    
    resultGrid {
      border: solid #000 1px;
      width: 200px;
    }
    idee sul perchè venga sdegnosamente ignorato??

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Ho risolto il problema dei css:

    la cartella css è dentro WebContent (non ho provato altrove.. lì funziona =P)

    il contenuto del file era da modificare:
    codice:
    tr.oddRow {
      background-color: white;
    }
    
    tr.evenRow {
      background-color: silver;
    }
    
    table.formGrid {
      border: solid #000 3px;
      width: 400px;
    }
    
    table.resultGrid {
      border: solid #000 1px;
      width: 200px;
    }
    L'unico nodo irrisolto è il come visualizzare i messaggi dichiarati globalmente nel messages.properties...
    attualmente il mio codice jsf:
    codice:
    <h:outputLabel value="First Number" for="firstNumber" />
          <h:inputText id="firstNumber" label="First Number"
            value="#{calculator.firstNumber}" required="true" />
          <h:message for="firstNumber" />
    in caso di valore vuoto restituisce:
    codice:
    "Second Number": Il valore è obbligatorio
    mentre mi aspetterei che restituisca
    codice:
    required
    come specificato nel file messages.properties:
    codice:
    javax.faces.component.UIInput.REQUIRED_detail=required
    Qualche idea?

  5. #5
    Ciao verce, devi specificare anche la proprietà da specificare nel message property è
    codice:
    javax.faces.component.UIInput.REQUIRED
    Quello che vai ha sovrascrivere tu è il dettaglio del messaggio di errore

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Uhmm uhmmm..

    Perdonami ma onestamente non ho capito

    me lo puoi rispiegare un pò più dettagliatamente?

  7. #7
    Allora i messaggio jsf sono composti generalmente da due parti (possono essere anche di più) il messaggio e il dettaglio del messaggio. Essi vengo identificate il file di property tramite il fullClassName del componente (es: javax.faces.component.UIInput) più la parte del messaggio a cui si vuole assegnare il valore. Faccio un esempio per chiarirti ulteriormente le idee. Se il mio message.property fosse questo:
    codice:
    javax.faces.component.UIInput.REQUIRED=Campo obbligatorio.
    javax.faces.component.UIInput.REQUIRED_detail=Questo campo deve essere impostato.
    e la mia pagina fosse questa :
    codice:
          <h:inputText id="firstNumber" label="First Number"
            value="#{calculator.firstNumber}" required="true" />
          <h:message for="firstNumber" showDetail ="true"/>
    Se non metto il tale valore, allora avrei come messaggio questo:
    codice:
    firstNumber: Campo obbligatorio. firstNumber: Questo campo deve essere impostato.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Funziona! perfetto!!

    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.