Использование валюты с использованием в JSF

Я использую в заголовке шаблона следующим образом.

<h:selectonemenu value="#{currencyRateBean.currency}" onchange="submit();">
 </h:selectonemenu>

Этот список заполняется с помощью List представляющего список валют. Список хранится в компоненте, включенном в приложение, CurrencyBean.

Управляемый компонент JSF заключается в следующем.

@ManagedBean
@SessionScoped
public final class CurrencyRateBean implements Serializable
{
 private static final long serialVersionUID = 1L;
 private String currency;
 private BigDecimal currencyRate;

 public CurrencyRateBean() {}

 @PostConstruct
 private void init()
 {
 currencyRate=new BigDecimal(1);
 }

 public BigDecimal getCurrencyRate() {
 return currencyRate;
 }

 public String getCurrency() {
 return currency;
 }

 public void setCurrency(String currency) throws MalformedURLException, IOException
 {
 BufferedReader in = null;
 URLConnection connection;

 try
 {
 URL url = new URL("http://www.exchangerate-api.com/INR/"+currency+"/1?k=FQRxs-xT2tk-NExQj");
 connection = url.openConnection();
 in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
 String jsonObject = "";
 String line;

 while ((line = in.readLine()) != null)
 {
 jsonObject += line;
 }

 this.currencyRate = new Gson().fromJson(jsonObject, BigDecimal.class);
 this.currency = currency;
 }
 finally
 {
 if(in!=null){in.close();}
 }
 }
}

Метод setCurrency() вызывается при изменении валюты в (onchange="submit();"), который является POST-запросом, как и должно быть.

По завершении этого запроса на обновлении страницы будет отправлена дубликат. Чтобы избежать дублирования отправки, после запроса POST возникает запрос GET Http.

Как это можно сделать?

Пожалуйста, предложите, если есть лучшая, новая, точная альтернатива для обработки многовалютной заявки.

1 ответ

Попробуйте это, и избегайте onchange как можно больше.

licensed under cc by-sa 3.0 with attribution.