2014-03-31 63 views
0

將Wicket從版本6.12更新爲6.13/6.14之後,onSubmit操作不起作用。如階級:Wicket提交操作不起作用

public class LoginPage extends WebPage { 

    private String username = ""; 
    private String password = ""; 

    public LoginPage() { 
     super(); 
     Form<?> form = new Form<Void>("form"); 

     setDefaultModel(new CompoundPropertyModel<>(this)); 

     form.add(new Button("submit") { 

      @Override 
      public void onSubmit() { 
       System.out.println("SUBMIT "+username+":"+password); 
      } 
     }); 
     form.add(new TextField<String>("username").setRequired(true)); 
     form.add(new PasswordTextField("password").setRequired(true)); 
     add(form); 

    } 
} 

與HTML:

<!DOCTYPE html> 
<html xmlns:wicket> 
<body> 
    <form wicket:id="form"> 
    <input id="name" type="text" placeholder="Username" wicket:id="username"> 
    <input id="password" type="password" placeholder="Password" wicket:id="password"> 
    <input type="submit" wicket:id="submit" value="Enter"> 
    </form> 
</body> 
</html> 

不工作與檢票版6.13+和偉大的工作與檢票口6.12-。像SubmitLink這樣的改變按鈕並沒有幫助。

你能告訴我什麼是錯?

+1

乍一看,我在這裏看不出什麼錯。你知道你可以使用表單的onSubmit方法,而不是將提交按鈕添加到Wicket組件層次結構中嗎?也許你簡化了這個問題的代碼,所以這可能不適用。它仍然值得一試,以確定你的按鈕是否有特殊的東西。 – bernie

+2

添加'onError'並查看它是否在那裏停止 –

+0

onError不起作用,並將onSubmit方法移到窗體上也不起作用。在發佈之前,我測試了這個代碼。開發模式不起作用。 onSubmit不適用於新的Wicket或我是失敗者:( – pushistic

回答

0

我在我的測試項目中發現問題。我用改變MountedMapper隱藏URL中的版本號:

/** 
* Wrapper for hiding the version number in the URL 
*/ 
public class SimpleMountedMapper extends MountedMapper { 
    public SimpleMountedMapper(String mountPath, Class<? extends IRequestablePage> pageClass) { 
     super(mountPath, pageClass, new PageParametersEncoder()); 
    } 

    @Override 
    protected void encodePageComponentInfo(Url url, PageComponentInfo info) { 
    } 

    public Url mapHandler(IRequestHandler requestHandler) { 
     if (requestHandler instanceof ListenerInterfaceRequestHandler) { 
      return null; 
     } else { 
      return super.mapHandler(requestHandler); 
     } 
    } 
} 

在檢票口有毛病此實現新版本(從this question得到它)。

+0

檢查我的答案。我之前刪除它,因爲我認爲它打破了其他功能,但它是另一個問題,阻止它成功運行,所以我沒有刪除我的答案。似乎在工作,但是請您在有空時檢查一下。 – Apostolos

1

呃...哈克,但它似乎與6.15工作。 用以下代碼替換encodePageComponentInfo。

@Override 
protected void encodePageComponentInfo(Url url, PageComponentInfo info) { 
     Args.notNull(url, "url"); 

     if (info != null) { 
      String s = info.toString(); 
      if (!Strings.isEmpty(s)) { 
       try { 
        Integer.parseInt(s); 
       } catch (Exception e) { 
        QueryParameter parameter = new QueryParameter(s, ""); 
        url.getQueryParameters().add(parameter); 
       } 
      } 
    } 
}