2011-06-21 23 views
5

*我需要我的複選框列表選項來垂直顯示,而不是默認的水平顯示。我在名稱模板中的src文件夾中創建了一個文件夾,而另一個包含我的個性複選框list.I的修改.ftl文件名垂直複選框的文件夾是無法顯示自定義的複選框 我在JSP代碼是在struts2中垂直顯示<s:checkboxlist>的選項

<s:checkboxlist theme="vertical-checkbox" label="Which of the following are states of India" 
          name="states" 
           list="#{'01':'January','02':'February','03':'March','04':'April', 
    '05':'May'}" 
     /> 

請指點那裏我得到錯誤的。

回答

0

沒有看到修改後的文件.ftl這是很難判斷哪裏出了問題,但總的解決方案是:

  • 複製checkboxlist.ftl到一個新的目錄(如... /模板)
  • 在複製的文件中添加checkboxLabel類和迭代器之間的斷點:

    <label ... class="checkboxLabel"> 
    <br> 
    </@s.iterator> 
    
  • 參考/包括新... /模板/ checkboxlist.ftl覆蓋標準的CheckBoxList .ftl。

如果我正確地記得上述也可以在CSS中完成,但我忘了細節。

+0

@Sam如果你不熟悉.ftl文件,Struts2使用。ftl(Freemaker模板文件)以呈現表單。你可以看到一個覆蓋默認的示例http://www.mkyong.com/struts2/working-with-struts-2-theme-template/ – nmc

9

通常,struts2中的struts checkboxlist水平地勾選複選框。在大多數應用程序中,我們希望垂直顯示覆選框(逐行顯示)。對於這個對準垂直我們要做以下

  1. 您的src文件夾中創建一個目錄模板

  2. 與您要創建的模板的名稱創建一個文件夾(垂直 - 複選框)

  3. 將struts-2.1.6/src/core/src/main/resources/template/simple/checkboxlist.ftl文件複製到此文件夾的目錄內容如下。之前,你必須把
    標籤,只要你想或這樣的鏈接: http://codeglobe.blogspot.com/2009/09/struts2-align-check-box-vertical.html

  4. <s:checkboxlist list="urlist" name="selectedValues" listKey="id" listValue="descrption" theme="vertical-checkbox"></s:checkboxlist>

這會給你一個垂直複選框列表。唯一的區別是,在這裏你必須指定與你在項目的src文件夾中的模板目錄中創建的目錄相同的主題。

+0

我設法創建自己的模板,我可以改變_checkboxlist.ftl_ the我想要的方式。所以這個答案確實有效。 爲了讓我的自定義模板能夠正常工作(我沒有提到),我唯一需要做的就是在模板目錄中包含_checkboxlist.ftl_中引用的文件,例如:<#include「 css.ftl「/> <#include」scripting-events.ftl「/> <#include」common-attributes.ftl「/> <#include」dynamic-attributes.ftl「/> – razvang

6

我試着在這裏提供的答案,但它沒有按照我的意願工作,我失去了列表上的標籤,並且其他格式也消失了。所以,我做到了通過CSS:

<s:checkboxlist 
    name="myCheckboxList" 
    ... /> 

導致HTML元素像這樣:

<input type="checkbox" id="myCheckboxList-1" ... /> 
<label for="myCheckboxList-1" ... 
<input type="checkbox" id="myCheckboxList-2" ... /> 
<label for="myCheckboxList-2" ... 

製作垂直的複選框,然後在CSS是這樣的:

label[for*=myCheckboxList-]:after { 
    content:"\A"; white-space:pre; 
} 

選擇器聲明:「每個標籤的for-attribute包含'myCheckboxList-'」,並且內容狀態爲「添加換行符(」\ A「)並確保保留空白。」

+1

這是一個ingenius解。完美工作。只需3行插入我的應用程序的CSS文件。謝謝! –

+0

這個解決方案的代碼少得多,比發佈的其他代碼少。 Fantastisk! –

0

看到這個網站: http://mikeski.net/site/node/16

基本上,你只需要:

  1. 開拓
  2. 它將包含3行,中間行使用的CheckBoxList文件checkboxlist.ftl .ftl從簡單的主題。評論該行說:

    <#include "/${parameters.templateDir}/simple/checkboxlist.ftl" /> 
    
  3. 然後複製上面的URL中引用的自由標記代碼。

我做到了,它對我很有用。它會在你自己的專線上顯示你的複選框。

2

您可以在這裏看到:http://klyuty.blogspot.it/2011/03/creating-vertical-orientation-for.html 我認爲這是最簡單明瞭的方法。

  1. 在應用程序的WEB-INF/classes文件夾中創建文件夾模板。
  2. 在WEB-INF/classes/template文件夾(或其他主題的另一個文件夾)中創建簡單的文件夾。
  3. 從struts2-core.jar庫中複製文件checkboxlist.ftl(該文件位於jar文件的簡單主題文件夾中)。
  4. 在這個標籤字符串的結束後,該文件(見鏈接,更詳細):
 
for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html} 

和字符串之前:

</@s.iterator> 

添加這個(之間):

<#if parameters.cssStyle?exists> 
<#if "${parameters.cssStyle?html}" == "vertical"> 
<br/><#rt/> 
</#if> 
</#if> 

在此代碼中,「vertical」是css風格,我們將在strust2頁中使用,並且
是我們列表中兩個複選框之間的分隔符。

  • 在與S struts2的頁面:CheckBoxList的使用風格的 「垂直」 爲做一個垂直列表方向: