2015-06-26 17 views
5

Iam utilizzando il validatore di ibernazione per la convalida dei dati. Ho usato l'attributo @Range per convalidare un particolare campo.Impostazione dei dati dinamici sugli attributi min e max dell'annotazione @Range - validatori di ibernazione

@Range(min=0,max=100) 
private String amount; 

Questo va bene, ma posso modificare dinamicamente i valori di min e max invece di hard coding. Voglio dire, posso fare qualcosa del tipo:

@Range(min=${},max=${}) 
private String amount; 

risposta

4

Le annotazioni in Java utilizzano le costanti come parametri. Non puoi cambiarli dinamicamente.

Le costanti di compilazione possono essere solo primitive e stringhe. Controllare questo link.

Se si desidera renderlo configurabile, è possibile dichiararli come finali statici.

Per esempio:

private static final int MIN_RANGE = 1; 

private static final int MAX_RANGE = 100; 

e quindi assegnare in annotazione.

@Range(min=MIN_RANGE,max=MAX_RANGE) 
private String amount; 

Il valore di attributo annotazioni deve essere un'espressione costante.

0

Se si utilizza Primavera nel progetto, si può fare qualcosa di simile: il file

proprietà:

min_range = 0 
max_range = 100 

spring.xml:

<context:component-scan 
    base-package="com.test.config" /> 
<context:annotation-config /> 

<bean id="appConfigProperties" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> 
    <property name="location" value="classpath:appconfig.properties" /> 
</bean> 

java:

@Range(min=${min_range},max=${max_range}) 
private String amount; 

Non si tratta di un cambiamento del Dymanic, ma penso che tu stia cercando qualcosa di simile a questo

+0

min = "$ {min_range}", max = "$ {max_range}" – prsmax