2014-02-27 3 views
0

저는 zk 어플리케이션에 큰 문제가 있습니다. 모델을보기 위해 바인딩하고 싶지만 작동하지 않습니다. 전 모델에 액세스 애플릿을하려고하면, 내가 얻을 오류 java.lang.NullPointer애플릿이 corectly로 모델에 바인딩되어 있지 않습니다.

//index.zul 
<?page title="Auto Generated index.zul"?> 
<window id="mainWindow" title="edycja dokumentow" border="normal" 
apply="org.zkoss.bind.BindComposer" 
viewModel="@id('vm') @init('controller.EditDocsController')"> 
    <vbox> 
    <listbox id="modelList" height="160px" model="@bind(vm.modelList)"> 
     <listhead> 
      <listheader label="id" /> 
      <listheader label="open" /> 
     </listhead> 
     <template name="model"> 
      <listitem> 
       <listcell label="@bind(each)" /> 
       <listcell > 
        <button label="otworz" onClick="@command('open',id=each)"/>     
       </listcell> 
      </listitem> 
     </template>   
    </listbox>  
    <applet code="applet.EditFileApplet" codebase="applet" archive="EditApplet.jar" width="100px" height="100px" model="@save(vm.editApplet) before='open'"/> 
    <!--<applet code="applet.EditFileApplet" codebase="applet" archive="EditApplet.jar" width="100px" height="100px" model="@bind(vm.editApplet)'"/> 
      // I have tried these two version separetly 
    </vbox> 
</window> 

EditDocsController.java 사전에

public class EditDocsController { 
    private DocsDAO docksDAO = new DocsDAO(); 

    private List<Integer> modelList; 
    private Applet editApplet; 

    public Applet getEditApplet()       {  return editApplet; } 
    public void setEditApplet(Applet editApplet)  {  this.editApplet = editApplet; } 
    public List<Integer> getModelList()     {  return modelList; } 
    public void setModelList(List<Integer> modelList)  {  this.modelList = modelList; } 


    @AfterCompose 
    public void loadDock(){ 
    modelList = docksDAO.getData(); 
    /* editApplet = new Applet(); 
    editApplet.setCode("applet.EditFileApplet"); 
    editApplet.setCodebase("applet"); 
    editApplet.setArchive("EditApplet.jar");*/ 
    } 

    @Command 
    public void open(@BindingParam("id") Integer id){ 
    editApplet.getArchive(); 
    editApplet.invoke("open", new String[]{id.toString(),"user jakiś tam"}); 
    } 
} 

감사 당신은, 제발 복구 방법 어떤 생각이있는 경우 나 여기


과 공유하면 모든 스택 추적 https://docs.google.com/document/d/1YZs7xgzxbOGo70sPogUdNn5IbwWGcq2YU1GRszEtdNk/edit?usp=sharing

,536에게 있습니다

여기에 나를 위해 그것이, 그것의 일부인 그 문제에 대처하는 코드의 일부를 변경 한하지만 문제는 여전히 존재

lut 28, 2014 1:19:56 PM org.zkoss.bind.impl.ParamCall call 
SEVERE: 
    java.lang.NullPointerException 
    at controller.EditDocsController.open(EditDocsController.java:51) // the line editApplet.getArchive() 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

lut 28, 2014 1:19:56 PM org.zkoss.bind.impl.BinderImpl$CommandEventListener onEvent 
SEVERE: null 
    java.lang.NullPointerException 
    at controller.EditDocsController.open(EditDocsController.java:51) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

lut 28, 2014 1:19:56 PM org.zkoss.zk.ui.impl.UiEngineImpl handleError 
SEVERE: 
    java.lang.NullPointerException 
    at controller.EditDocsController.open(EditDocsController.java:51) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

lut 28, 2014 1:21:21 PM org.zkoss.bind.impl.BinderImpl addPropertySaveBindings0 
WARNING: component <Applet xLDQ7#myEditApplet> doesn't has event to save attribute model at  [file:/C:/Users/bbur/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/RPO/index.zul, line:30] 

가장 가치있는. , 내가 "오류가 난

<button label="otworz" onClick='myEditApplet.invoke("openDoc","1234")'/> 

에 초기화 애플릿

<applet id="myEditApplet" code="applet.EditFileApplet" codebase="applet" archive="EditApplet.jar" width="30px" height="30px" style="border: 1px" /> 

변경 버튼 정의를이 사용하고 난

I 버튼"otworz "를 클릭 EditDocsController

에서 열기 방법을 삭제 애플릿의 메소드를 호출하지 못했습니다 : openDoc undefined "애플릿 클래스 (public void openDoc (String idDoc))에 메소드가 존재 함에도 불구하고. 그것으로 가장 짜증나는 것은 내가 '("초기화") myEditApplet.invoke'를 호출 할 때 모든 것이 있다는 바로

+0

예외의 전체 스택 추적을 표시하십시오. –

+0

답변으로 추가 정보를 게시하지 마십시오. 당신은 그렇게하기 위해 질문을 편집 할 수 있고해야합니다. –

답변

0

ZK의 Applet 구성 요소에 따라서는 애플릿을 저장하는 데 사용할 수 없습니다, 더 model 속성이 없습니다 뷰 모델에서의 참조.

의 index.zul이 같은

가 대신 애플릿에 ID를 할당하고 두 번째 매개 변수로 open 명령에 해당 ID를 전달할 수있는 무언가를 (그리고 일반적으로 model 속성에 그 아니 사용)

... 
    <button label="otworz" onClick="@command('open', id=each, applet=editApplet)"/> 
... 
<applet id="editApplet" code="applet.EditFileApplet" codebase="applet" 
     archive="EditApplet.jar" width="100px" height="100px"/> 
... 

EditDocsController.java

... 
@Command 
public void open(@BindingParam("id") Integer id, 
       @BindingParam("applet") Applet applet){ 
    applet.invoke("open", new String[]{id.toString(),"user jakiś tam"}); 
} 
+0

고맙습니다. 작동합니다. –

관련 문제