2012-11-26 56 views
0

我有一個DropDownChoice框可以在load()上加載一個值列表,但是當我從列表中選擇一個值時,所選值不會顯示在框中,即使它似乎getModelObject()會檢索並返回正確的值(我選擇的值)。這只是盒子不顯示它。我使用Wicket 6.3.0,本地測試使用碼頭服務器6.1.26和FireFox 17.0,JQuery Mobile 1.2.0,JQuery 1.8.3。任何建議或想法?DropDownChoice不顯示選定的值

這裏是檢票代碼:

MetaProfile profile = null; 
... 
IModel<List<String>> oxeNodeModel = null; 
oxeNodeModel = new LoadableDetachableModel<List<String>>() { 
      private static final long serialVersionUID = 1L; 
      @Override 
      protected List<String> load() { 
        try { 
          List<String> names = getOXENodeList(); 
          //load the OXE node list 

          if (names == null) 
            return Collections.emptyList(); 
          else { 
            return names; 
          } 

        }catch (Exception e) { 
            return Collections.emptyList(); 
        } 
      } 
    }; 

    oxeNodeBox = new DropDownChoice("oxeNode", 
      new PropertyModel<String>(profile, "oxeNodeName"), oxeNodeModel); 

    oxeNodeBox.setEnabled(true); 
    oxeNodeBox.setOutputMarkupId(true); 
    add(oxeNodeBox); 

HTML模板是:

<tr id="oxeNodeRow" name="oxeNodeRow" style="display:none"> 
    <td align="right" nowrap class="fieldLabel"><label for="oxeNode" wicket:id="oxeNodeLabel" class="requiredLabel">OXE Node</label></td> 
    <td colspan="-1"><select id="oxeNode" name="oxeNode" wicket:id="oxeNode"> 
      <option selected>OXENode</option> </select> 
    </td> 
</tr> 

我有一大堆的DropDownChoice箱有同樣的問題相同形式。但是,窗體的第一個DropDownChoice沒有問題,即,一旦我從列表中進行選擇,它就會顯示選定的值。它的檢票代碼和html標記如下。我們希望,有人用銳利的眼睛能發現可能引發問題的區別:

profileTypeBox = new DropDownChoice<MetaProfileType>("type", 
     new PropertyModel<MetaProfileType>(profile, "type"), 
     Arrays.asList(MetaProfileType.values()), 
     new IChoiceRenderer<MetaProfileType>() { 
      private static final long serialVersionUID = 1L; 
      @Override 
      public Object getDisplayValue(MetaProfileType object) { 
       return object.name(); 
      } 
      @Override 
      public String getIdValue(MetaProfileType object, int index) { 
       return object.name(); 
      } 
     } 
    ); 
    profileTypeBox.setOutputMarkupId(true); 
    add(profileTypeBox); 

HTML:

    <td colspan="-1"> <select id="profileType" name="profileType" wicket:id="type"> 
       <option>default</option> 
      </select> </td> 

順便說一句,我在這裏,包括HTML標題也只是在情況下,它可能是問題,因爲這個問題出現後,我從舊的CSS頭(註釋掉)切換到標準的jQuery Mobile包括:

<html xmlns:wicket="http://wicket.apache.org/"> 
    <head> 

     <!-- meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 

    <link rel="stylesheet" type="text/css" href="css/custom.css" media="only screen and (max-width: 480px)"/> 
    <link rel="stylesheet" type="text/css" href="css/default.css" media="only screen and (min-width: 1025px)"/> 
    <link rel="stylesheet" type="text/css" href="css/portrait.css" 
     media="all and (max-device-width: 1024px) and (orientation:portrait)"/> 
    <link rel="stylesheet" type="text/css" href="css/landscape.css" 
     media="all and (max-device-width: 1024px) and (orientation:landscape)"/> 
    <meta name="viewport" content="user-scalable=no, width=device-width"/> 
    <link rel="stylesheet" href="css/iphone-style-checkboxes.css" type="text/css"/> 
    <script type="text/javascript" src="js/iphone-style-checkboxes.js"></script--> 

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"> </script>   

    </head> 
+0

當你說「從列表中選擇一個值」,你的意思是選擇通過瀏覽器使用你的應用程序時的值?或者你的意思是從代碼中的列表中選擇一個值? – Sarhanis

+0

很抱歉,如果不清楚,我的意思是當用戶從瀏覽器網頁上的DropDownChoice列表中手動選擇一個值時,所選值不會顯示在gui的框中。不,我並不是指以編程方式選擇一個值。 –

+0

這聽起來不可能。你能展示HTML顯示嗎?是否有一些AJAX調用?爲什麼是colspan = -1?這沒有意義。 – Sarhanis

回答

0

這似乎是一個HTML的問題。

第一步:刪除colspan =「 - 1」。這是無效的HTML:http://www.w3.org/wiki/HTML/Elements/td

+0

感謝您的輸入。我確實嘗試刪除colspan =「 - 1」,不幸的是,問題依然存在。 –