2013-05-24 2 views
0

내가 ..문자열 변수에 ZK 바인딩 문제가 있습니까?

package com.viewmodel; 

import java.util.ArrayList; 
import java.util.List; 

import org.zkoss.bind.annotation.AfterCompose; 
import org.zkoss.bind.annotation.Command; 
import org.zkoss.bind.annotation.ContextParam; 
import org.zkoss.bind.annotation.ContextType; 
import org.zkoss.zk.ui.Component; 

import com.binding.BindComponent; 

public class BindingViewModel { 
    BindComponent compo = null; 
    private List<BindComponent> dataList; 

    @AfterCompose 
    public void afterCompose(@ContextParam(ContextType.VIEW) Component view){ 
     dataList = new ArrayList<BindComponent>(); 
     compo = new BindComponent(); 
     compo.setDecimalbox("12.67"); 
     compo.setTextbox("hariom"); 
     compo.setDoublebox("123"); 
     compo.setIntbox(12); 
     dataList.add(compo); 

    } 

    public BindComponent getCompo() { 
     return compo; 
    } 
    public void setCompo(BindComponent compo) { 
     this.compo = compo; 
    } 
    public List<BindComponent> getDataList() { 
     return dataList; 
    } 
    public void setDataList(List<BindComponent> dataList) { 
     this.dataList = dataList; 
    } 


} 

변수 문자열과 ZUL 페이지와 DecimalboxDoublebox처럼 거의 ZK 구성 요소를 결합하는

<?page title="Auto Generated index.zul"?> 
<window title="Hello World!!" apply="org.zkoss.bind.BindComposer" 
    border="normal" width="200px" 
    viewModel="@id('vm') @init('com.viewmodel.BindingViewModel')"> 

    <label value="You are using: ${desktop.webApp.version}" /> 

    <listbox model="@bind(vm.dataList)"> 
     <listhead> 
      <listheader value="Textbox"></listheader> 
      <listheader value="DoubleBox"></listheader> 
      <listheader value="IntBox"></listheader> 
      <listheader value="DecimalBox"></listheader> 

     </listhead> 
     <template name="model" var="mymodel"> 
      <listitem> 
       <listcell> 
        <textbox value="@bind(mymodel.textbox)"></textbox> 
       </listcell> 
       <listcell> 
        <doublebox value="@bind(mymodel.doublebox)"></doublebox> 
       </listcell> 
       <listcell> 
        <intbox value="@bind(mymodel.intbox)"></intbox> 
       </listcell> 
       <listcell> 
        <decimalbox value="@bind(mymodel.decimalbox)"></decimalbox> 
       </listcell> 
      </listitem> 
     </template> 
    </listbox> 
</window> 

시도와 콩 클래스 나처럼 .. ..

public class BindComponent { 
    private String textbox; 
    private int intbox; 
    private String doublebox; 
    private String decimalbox; 
    public String getTextbox() { 
     return textbox; 
    } 
    public void setTextbox(String textbox) { 
     this.textbox = textbox; 
    } 
    public int getIntbox() { 
     return intbox; 
    } 
    public void setIntbox(int intbox) { 
     this.intbox = intbox; 
    } 
    public String getDoublebox() { 
     return doublebox; 
    } 
    public void setDoublebox(String doublebox) { 
     this.doublebox = doublebox; 
    } 
    public String getDecimalbox() { 
     return decimalbox; 
    } 
    public void setDecimalbox(String decimalbox) { 
     this.decimalbox = decimalbox; 
    } 



} 

이제는 zul 페이지에서 값을 변경하려고 할 때 String 변수로 zul 값을 바인딩하기 때문에 메서드가 호출되지 않습니다. 어느 누구라도 코드 문제가 무엇인지 말해 줄 수 있습니까?

답변

0

나는이 BigDecimal
이 솔루션은

public void setDecimalbox(BigDecimal decimalbox) { 
    this.decimalbox = decimalbox != null ? decimalbox.toString() : this.decimalbox; 
} 

그리고 Doublebox

public void setDoublebox(Double doublebox) { 
    this.doublebox = doublebox != null ? doublebox.toString : this.doublebox; 
} 
+0

나빌을 위해 내가 doublebox 진수 상자에 대해하지 intbox..only이 이야기하고 있어야 문제가 Decimalbox#getValue() 반환 생각 String에서 구성 요소를 바인딩하면 문제가 발생합니다. –

+0

오류를 조금 더 설명 할 수 있습니까? 나는 네가 옳다고 생각하지 않는다. –

+0

사실 내가 질문에 언급 한대로 문자열 변수와 함께 doulebox 및 decimalbox를 바인딩 할 때 doublebox 또는 decimalbox에 일부 값을 입력 할 때 set 메소드가 Java 코드에서 업데이트되지 않도록 값이 지정되지 않음 –