posts - 48, comments - 13, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
           FROM :
          http://wiki.apache.org/tapestry/Tapestry5HowtoSelectWithObjects


          import java.util.ArrayList;
          import java.util.Collection;
          import java.util.List;
          import org.apache.tapestry.OptionGroupModel;
          import org.apache.tapestry.OptionModel;
          import org.apache.tapestry.ValueEncoder;
          import org.apache.tapestry.internal.OptionModelImpl;
          import org.apache.tapestry5.internal.OptionGroupModelImpl;
          import org.apache.tapestry.ioc.services.PropertyAccess;
          import org.apache.tapestry.ioc.services.PropertyAdapter;
          import org.apache.tapestry.util.AbstractSelectModel;
          /** Generic selection model for a list of Objects.
          * use:
          * <pre>@Inject private PropertyAccess _access;</pre>
          * in your page to ge the {@link PropertyAccess} service.<br>
          * !Notice: you must set the created instance both as model and encoder parameter for the {@link Select} component.*/
          public class GenericSelectModel<T> extends AbstractSelectModel implements ValueEncoder<T> {
          private PropertyAdapter labelFieldAdapter;
          private PropertyAdapter idFieldAdapter;
          private Collection<T>         list;
          public GenericSelectModel(Collection<T> list, Class<T> clazz, String labelField, String idField, PropertyAccess access) {
          this.list = list;
          if (idField != null)
          this.idFieldAdapter = access.getAdapter(clazz).getPropertyAdapter(idField);
          if (labelField != null)
          this.labelFieldAdapter = access.getAdapter(clazz).getPropertyAdapter(labelField);
          }
          public void addOptionGroup(String label, boolean disabled, List<T> options) {
          List<OptionModel> optionModels = new ArrayList<OptionModel>();
          if (labelFieldAdapter == null) {
          for (T obj : options) {
          optionModels.add(new OptionModelImpl(nvl(obj), obj));
          }
          } else {
          for (T obj : options) {
          optionModels.add(new OptionModelImpl(nvl(labelFieldAdapter.get(obj)), obj));
          }
          }
          if (optionGroups == null) {
          optionGroups = new ArrayList<OptionGroupModel>();
          }
          optionGroups.add(new OptionGroupModelImpl(label, disabled, optionModels, new String[0]));
          }
          public List<OptionGroupModel> getOptionGroups() {
          return null;
          }
          public List<OptionModel> getOptions() {
          List<OptionModel> optionModelList = new ArrayList<OptionModel>();
          if (labelFieldAdapter == null) {
          for (T obj : list) {
          optionModelList.add(new OptionModelImpl(nvl(obj)));
          }
          } else {
          for (T obj : list) {
          optionModelList.add(new OptionModelImpl(nvl(labelFieldAdapter.get(obj)), obj));
          }
          }
          return optionModelList;
          }
          // ValueEncoder functions
          public String toClient(T obj) {
          if (idFieldAdapter == null) {
          return obj + "";
          } else {
          return idFieldAdapter.get(obj) + "";
          }
          }
          public T toValue(String string) {
          if (idFieldAdapter == null) {
          for (T obj : list) {
          if (nvl(obj).equals(string)) return obj;
          }
          } else {
          for (T obj : list) {
          if (nvl(idFieldAdapter.get(obj)).equals(string)) return obj;
          }
          }
          return null;
          }
          private String nvl(Object o) {
          if (o == null)
          return "";
          else
          return o.toString();
          }
          }
          

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 临澧县| 竹溪县| 雅安市| 友谊县| 万山特区| 方山县| 会同县| 阿鲁科尔沁旗| 砚山县| 额济纳旗| 丹江口市| 信丰县| 沐川县| 浦东新区| 衡南县| 邳州市| 宜兰县| 都江堰市| 泰和县| 满城县| 乐山市| 沁源县| 舞钢市| 永胜县| 长治市| 肥西县| 青川县| 左贡县| 肇州县| 阜南县| 古浪县| 于田县| 建昌县| 宁远县| 遵义县| 九龙县| 瑞丽市| 自治县| 昂仁县| 宣汉县| 明光市|