2017-01-30 5 views
0

String 및 BigDecimal 유형의 필드가있는 클래스가 있습니다. 구분 기호로 BigDecimal을 표시 할 때 점이 쉼표가되고 싶습니다. 나는 폴란드어에 대한 코딩을 변경했지만 여전히 점입니다. <f:convertNumber locale=""#{language.locale}"/> 사용할 때 잘 작동하지만 모든 필드가 많기 때문에 모든 필드에서 그렇게하고 싶지 않습니다.BigDecimal을 볼 때 십진수 구분 기호

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

얼굴-config.xml에

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" 
       xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 
    <application> 
     <locale-config> 
      <default-locale>pl</default-locale> 
     </locale-config> 
    </application> 
</faces-config> 

Language.java

@Named 
@SessionScoped 
public class Language implements Serializable { 

    private Locale locale; 

    @PostConstruct 
    public void init() { 
     locale = FacesContext.getCurrentInstance().getApplication().getDefaultLocale(); 
    } 

    public Locale getLocale() { 
     return locale; 
    } 

    public void setLocale(Locale locale) { 
     this.locale = locale; 
    } 

} 

view.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions"> 
    <f:view locale="#{language.locale}"> 
     <h:head> 
      <f:facet name="first"> 
       <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
       <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /> 
       <h:outputScript library="primefaces" name="jquery/jquery.js" /> 
      </f:facet> 
      <f:facet name="middle"> 
       <h:outputStylesheet library="css" name="bootstrap.css" /> 
       <h:outputStylesheet library="css" name="default.css" /> 
       <h:outputScript name="js/bootstrap.js" /> 
      </f:facet> 
     </h:head> 
     <h:body> 
      <h:form id="menuForm"> 
       ... 
       ... 
       ... 
       <h:outputText value="#{detail.1}" /> // string 
       <h:outputText value="#{detail.2}" /> // bigdecimal 
       ... 
       ... 
       ... 
      </h:form> 
     </h:body> 
    </f:view> 
</html> 

답변

0

당신 내가 <f:convertNumber locale=""#{language.locale}"/> 작품을 잘 사용하지만, 당신이 '돈 만약 내가

그래서 그들 중 많은이 있기 때문에 모든 분야에서 그렇게하지 않으려면 어떤 방법

에 로케일로 변환해야

public String getLocalized(BigDecimal number) throws Exception { 
    // get desired locale (maybe a constant will suit you better) 
    NumberFormat nf = NumberFormat.getInstance(new Locale("pl_PL")); 
    return nf.format(number.doubleValue()); 
} 
+0

@BalusC 실제로 내가 검색하지 않았다 t 클라이언트 측에서 그것을하고 싶은, 당신은 원하는 형식으로 숫자를하기 위해 여러분의 빈에 getLocaleNumber() (또는 유사) 메소드를 추가해야합니다 이 답변을 구글에서, 나는 방공호를 사용했다. ally *, 아마도 반올림이 빠졌지 만, 빈에서 형식화 된 getter를 만드는 IMO 접근법은 ''를 반복적으로 사용하고 싶지 않으면 올바른 방법입니다. 당신의 것이 더 좋을 것이라고 확신하지만, 미안하지만, 어둠 속에서 촬영하는 것에 대해서는 동의하지 않습니다. 오류가 JSF 지식이 부족한 경우입니다. –