2012-04-12 6 views
1

은 ZK 레이블 구성 요소의 숫자 형식을 지정하는 방법이 있습니까? 예 : <label value="${each.value}" />? 값은 두 배이며 수천 등을 구분하고 싶습니다 ... 예를 들어 doublebox에 형식 속성이 있지만 그 숫자를 레이블로 표시하려면 어떻게해야할까요? 어떤 도움을 주셔서 감사합니다.ZKOSS 레이블의 숫자 형식

답변

2

기능 요청 당신이 그것을 here을 찾을 수 있습니다 ZK의 추적 시스템에 이것에 대한 기능 요청을 열어 모든

첫째. 업데이트가 필요한 경우이 절차를 따르십시오.

을 구현

방법은 당신이 사용하고있는 패턴 & 기술에 따라이 구현의 사실 방법이 있습니다.

MVC & EL은

당신은 당신의 ZUL 파일에 당신을위한 서식을 할 것 EL 함수를 만들 수 있습니다. 먼저 다음과 같은 클래스를 작성하십시오.

public class FormatElNumber { 
    public static String formatStock(double stock) { 
     final NumberFormat nf = NumberFormat.getInstance(); 
     nf.setMaximumFractionDigits(2); 
     return nf.format(stock); 
    } 
} 

그러면 소수점 두 자리 숫자가 출력됩니다. 둘째 당신이 당신의 ZUL 파일의 상단에이를 추가해야

<?xel-method prefix="c" name="formatStock" class="demo.grid.hierarchy.FormatElNumber" 
    signature="java.lang.String formatStock(double)"?> 

을 그럼 당신은 다음과 같이 할 수있는 라벨이있을 때 :이 기술에

<label style="color:red;" value="${c:formatStock(each.averageHigh)}" /> 

더 infomration 것은 here 사용할 수 있습니다.

MVVM

MVVM, 당신은 (예를 들어,이 클래스가 안된주의,하지만 당신은 아이디어를 얻을하시기 바랍니다)이라는 변환기 무엇을 만들 구현하기 위해 실제로 쉽습니다.

<label value="@load(vm.message) @converter(vm.myConverter)"/> 

당신이 here을 참조 할 수 있습니다이 기술에 대한 자세한 내용은 :

public class NumberFormatConverter implements Converter { 

    @Override 
    public Object coerceToBean(Object val, Component comp, BindContext ctx) { 
     return null; 
    } 

    @Override 
    public Object coerceToUi(Object val, Component comp, BindContext ctx) { 

     if(!(val instanceof Integer)) { 
      throw new IllegalArgumentException("The argument must be a number!"); 
     } 

     final Object tmp = ctx.getConverterArg("length"); 
     int length = 0; 

     if(tmp instanceof Integer) { 
      length = (Integer)tmp; 
     } 

     final NumberFormat nf = NumberFormat.getInstance(); 
     nf.setMaximumFractionDigits(length); 

     return nf.format(val); 
    } 

} 

그런 다음 당신이 당신의 ZUL 파일에서 할 모든 당신이 예를 들어, 값에 변환기를 사용하고자하는 지정합니다. 워드 프로세서

+0

쿨! 이미 @converter 방식으로이 작업을 보았습니다. 그러나 어떤 경우에는 설명대로 MVC 모델을 사용하고 있습니다 ... 어쨌든 오늘 나중에 시도 할 것입니다. 시간 내 주셔서 감사합니다. Tim! – Gatekeeper

+0

이 솔루션에 이상한 문제가 있습니다 ... 제 코드는 당신이 제안한 것과 같지만''? ', zkoss는 다음과 같은 오류를 던집니다 : org.zkoss.zk.ui.UiException : file :/C :/Users ... w/main/pageIncomeEntry.zul : 2 : 59 : 클래스를 찾을 수 없습니다 : my.package.ElNumberFormatter' 패키지와 클래스 이름을 두 번 확인했습니다 ... 이것에 대한 의견이 있으십니까? – Gatekeeper

+0

좋아, taglib를 생성하여이 문제를 해결했고 지금은 ... – Gatekeeper