2011-01-14 6 views
8

Vorrei memorizzare l'origine per le caselle di selezione html in un file di configurazione. Questi contengono lunghe stringhe che non cambiano spesso (ma occasionalmente lo fanno):Proprietà di configurazione che utilizzano la stessa chiave per creare un array/elenco

  • Lorem ipsum sit amet nr. 1
  • Lorem ipsum sit amet nr. 2
  • Lorem ipsum sit amet nr. 3
  • Lorem ipsum sit amet nr. 4

Uso già la configurazione di comuni. È possibile memorizzarli usando le stesse chiavi di proprietà in qualche tipo di oggetto di configurazione (XMLConfiguration, HierarchicalConfiguration, ecc.)? Intendo essere in grado di recuperarli in una volta sola usando un'interfaccia simile a getStringArray() (o elenco)? Esempio:

// reject.reason = Lorem ipsum sit amet nr. 1 
// reject.reason = Lorem ipsum sit amet nr. 2 
// reject.reason = Lorem ipsum sit amet nr. 3 
// reject.reason = Lorem ipsum sit amet nr. 4 

config.getStringArray(reject.reason) 

Non voglio tenerli separati sulla stessa linea, perché, in primo luogo, le ragioni sono lunghi, e in secondo luogo, ci sono un sacco di ragioni (> 10).

Non voglio memorizzarli in enumerazione, b/c sarà impossibile cambiarli senza ricompilare il codice.

Qualche suggerimento su come raggiungere questo obiettivo?

risposta

13

Il tuo esempio mi sta bene. Se viene specificato un elenco di valori utilizzando la stessa chiave, sono trattati come una lista, e il seguente dovrebbe funzionare:

reject.reason = Lorem ipsum sit amet nr. 1 
reject.reason = Lorem ipsum sit amet nr. 2 
reject.reason = Lorem ipsum sit amet nr. 3 
reject.reason = Lorem ipsum sit amet nr. 4 

Nel codice Java:

PropertiesConfiguration config = new PropertiesConfiguration("gui.properties"); 
String[] reasons = config.getStringArray("reject.reason"); 

http://commons.apache.org/configuration/userguide/howto_properties.html#Lists_and_arrays

+0

Grande, grazie, dogbane! Sai se la configurazione di comuni ha qualche supporto per i pacchetti di risorse codificati UTF-8 per caso? –

4

Li potrebbe memorizzare in un file .properties e nome come ...

key.0=line0 
key.1=line1 
key.2=line2 

Poi, nel tuo iterate codice tramite le proprietà con un ciclo for in cerca di "key." + i fino ad ottenere un nulla di nuovo.

Ho fatto questo in passato per enumerare e configurare le porte COM e funziona bene.

+0

Questo è ciò che Stavo scrivendo :) Potresti anche avvolgere l'oggetto di configurazione standard nel tuo wrapper che fa questo per te. – extraneon

+0

Giusto, questo è stato anche il mio primo pensiero. Non riesco a credere che non esista una soluzione pronta per questo caso d'uso. Inoltre, ritengo che sia già fornito da una configurazione comune e non riesco proprio a trovare informazioni chiare su come ottenerlo. Proverò solo con il mio intestino e userò solo quanto sopra menzionato ora. –

Problemi correlati