亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? datefieldasrenderer.java

?? adf-faces 甲骨文的jsf組件,功能很強(qiáng).開源免費(fèi).
?? JAVA
字號(hào):
package oracle.adfdemo.view.faces.composite;

import java.io.IOException;

import java.util.Date;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.NumberConverter;
import javax.faces.render.Renderer;
import javax.faces.validator.LongRangeValidator;

import oracle.adf.view.faces.component.core.input.CoreInputText;

/**
 * An experiment in building a renderer that uses a composite
 * component strategy to render.  Some basic principles:
 * <ul>
 * <li> The child components get re-created on each pass through
 *    the system;  this means seeing if they exist in both Apply Request
 *    Values (<code>decode()</code>) and Render Response
 *    (<code>encodeBegin()</code>), and marking the components
 *    transient so they don't get saved.
 * <li> The model is the tricky part:  instead of using real
 *   <code>ValueBindings</code> on the children, I let them
 *   use local values, and then manully transfer over their local values
 *   into an overall "local value" during validate().  Unfortunately,
 *   using ValueBindings to automate the transfer wouldn't quite work,
 *   since the transfer wouldn't happen 'til Update Model, which is
 *   too late to preserve the semantics of an editable value component in JSF.
 * </ul>
 * @author Adam Winer
 */
public class DateFieldAsRenderer extends Renderer
{
  public void decode(FacesContext context, UIComponent component)
  {
    _addChildren(context, component);

    Map attrs = component.getAttributes();
    if (Boolean.TRUE.equals(attrs.get("readOnly")) ||
        Boolean.TRUE.equals(attrs.get("disabled")))
      return;

    // Just clue in component that we have been "submitted" so
    // that it doesn't short-circuit anything
    EditableValueHolder evh = (EditableValueHolder) component;
    evh.setSubmittedValue(Boolean.TRUE);

    // Because these components weren't around during processDecodes(),
    // they didn't get decoded.  So, run that now.
    component.getFacet("month").processDecodes(context);
    component.getFacet("year").processDecodes(context);
    component.getFacet("day").processDecodes(context);
  }

  public Object getConvertedValue(
    FacesContext context,
    UIComponent  component,
    Object       submittedValue)
  {
    EditableValueHolder monthComp = (EditableValueHolder) component.getFacet("month");
    EditableValueHolder yearComp = (EditableValueHolder) component.getFacet("year");
    EditableValueHolder dayComp = (EditableValueHolder) component.getFacet("day");

    if (!monthComp.isValid() ||
        !yearComp.isValid() ||
        !dayComp.isValid())
    {
      // =-=AEW What to do????????
      //setValid(false);
      return null;
    }

    int year = ((Number) yearComp.getValue()).intValue();
    // We'll be 1970 - 2069.  Good enough for a demo.
    if (year < 70)
      year += 100;

    int month = ((Number) monthComp.getValue()).intValue() - 1;
    int day = ((Number) dayComp.getValue()).intValue();

    Date oldValue = (Date) ((EditableValueHolder) component).getValue();
    Date newValue = (Date) oldValue.clone();
    newValue.setYear(year);
    newValue.setMonth(month);
    newValue.setDate(day);

    // Invalid day given the month
    if (day != newValue.getDate())
    {
      int numberOfDaysInMonth = day - newValue.getDate();
      FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Invalid date.",
                    "This month only has " + numberOfDaysInMonth + " days!");
      throw new ConverterException(message);
    }

    return newValue;
  }

  public void encodeBegin(FacesContext context,
                          UIComponent component) throws IOException
  {
    _addChildren(context, component);
  }

  public void encodeChildren(FacesContext context,
                             UIComponent component) throws IOException
  {
    ResponseWriter out = context.getResponseWriter();

    UIComponent month = component.getFacet("month");
    month.encodeBegin(context);
    month.encodeChildren(context);
    month.encodeEnd(context);

    out.writeText("\u00a0/\u00a0", null);

    UIComponent day = component.getFacet("day");
    day.encodeBegin(context);
    day.encodeChildren(context);
    day.encodeEnd(context);

    out.writeText("\u00a0/\u00a0", null);

    UIComponent year = component.getFacet("year");
    year.encodeBegin(context);
    year.encodeChildren(context);
    year.encodeEnd(context);
  }

  public boolean getRendersChildren()
  {
    return true;
  }

  private void _addChildren(FacesContext context, UIComponent component)
  {
    // If the components are already there, bail.
    if (component.getFacet("month") != null)
      return;

    String id = component.getId();
    if (id == null)
    {
      id = context.getViewRoot().createUniqueId();
      component.setId(id);
    }

    Map facets = component.getFacets();
    facets.clear();

    Date value = (Date) ((EditableValueHolder) component).getValue();

    CoreInputText month = _createTwoDigitInput(context);
    month.setShortDesc("Month");
    month.setId(id + "_month");

    LongRangeValidator monthRange = _createLongRangeValidator(context);
    monthRange.setMinimum(1);
    monthRange.setMaximum(12);
    month.addValidator(monthRange);
    if (value != null)
      month.setValue(new Integer(value.getMonth() + 1));
    facets.put("month", month);

    CoreInputText day = _createTwoDigitInput(context);
    day.setShortDesc("Day");
    day.setId(id + "_day");
    LongRangeValidator dayRange = _createLongRangeValidator(context);
    dayRange.setMinimum(1);
    dayRange.setMaximum(31);
    day.addValidator(dayRange);
    if (value != null)
      day.setValue(new Integer(value.getDate()));
    facets.put("day", day);

    CoreInputText year = _createTwoDigitInput(context);
    year.setShortDesc("Year");
    year.setId(id + "_year");
    if (value != null)
    {
      int yearValue = value.getYear();
      if (yearValue >= 100)
        yearValue -= 100;
      year.setValue(new Integer(yearValue));
    }

    facets.put("year", year);
  }

  private LongRangeValidator _createLongRangeValidator(FacesContext context)
  {
    return (LongRangeValidator)
      context.getApplication().createValidator(LongRangeValidator.VALIDATOR_ID);
  }

  private CoreInputText _createTwoDigitInput(FacesContext context)
  {
    CoreInputText input = new CoreInputText();
    input.setColumns(2);
    input.setMaximumLength(2);
    input.setTransient(true);
    input.setRequired(true);
    input.setSimple(true);

    NumberConverter converter = (NumberConverter)
      context.getApplication().createConverter(NumberConverter.CONVERTER_ID);
    converter.setIntegerOnly(true);
    converter.setMaxIntegerDigits(2);
    converter.setMinIntegerDigits(2);
    input.setConverter(converter);

    return input;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚一区二区| 国产a视频精品免费观看| 欧美午夜精品久久久久久超碰| 一区在线观看视频| 色综合天天综合色综合av| 一区二区三区日韩精品| 欧美视频三区在线播放| 亚洲成人一区二区| 日韩一区二区麻豆国产| 久久99精品网久久| 久久精品免费在线观看| 99综合电影在线视频| 一区二区三区在线影院| 精品视频一区二区三区免费| 国产一区二区电影| 欧美激情资源网| 色综合天天综合在线视频| 亚洲电影一级片| 精品少妇一区二区三区| 成人免费看黄yyy456| 亚洲欧美日韩系列| 欧美高清视频www夜色资源网| 精品一区二区在线免费观看| 国产午夜亚洲精品午夜鲁丝片| 91丨porny丨中文| 亚洲电影视频在线| 国产日韩欧美精品一区| 91福利国产精品| 国产一区二区主播在线| 亚洲视频在线一区二区| 欧美一区二区不卡视频| 丁香天五香天堂综合| 一区二区三区四区乱视频| 欧美一级片免费看| av电影在线观看一区| 日韩电影一二三区| 亚洲欧洲性图库| 欧美tk—视频vk| 在线亚洲一区二区| 国产精品一区免费在线观看| 亚洲国产精品视频| 欧美激情一区二区三区不卡| 欧美精品第1页| av男人天堂一区| 精品系列免费在线观看| 一区二区在线观看视频| www日韩大片| 欧美日韩dvd在线观看| 国产成人免费视频网站| 男女男精品视频| 一区二区视频在线| 国产偷国产偷亚洲高清人白洁| 在线电影欧美成精品| 91亚洲国产成人精品一区二区三| 国产一区啦啦啦在线观看| 亚洲一区二区三区精品在线| 国产精品剧情在线亚洲| 精品国精品国产| 欧美一区二区三区的| 在线中文字幕一区| 不卡欧美aaaaa| 国产成人啪免费观看软件| 日本不卡一区二区三区| 亚洲综合无码一区二区| 国产精品乱人伦一区二区| 日韩欧美国产一区在线观看| 欧美精品tushy高清| 欧美亚洲高清一区| 在线一区二区视频| 色综合天天性综合| av在线综合网| aaa欧美大片| 9l国产精品久久久久麻豆| 成人在线一区二区三区| 国产一区二区美女| 国产一区二区福利| 国产馆精品极品| 国产成人免费av在线| 成人一区二区视频| 成人精品视频一区二区三区尤物| 国产sm精品调教视频网站| 国产精品自拍av| 国产精品羞羞答答xxdd| 国产一区视频网站| 国产精品18久久久久久久久久久久 | 日韩午夜三级在线| 欧美日韩国产首页在线观看| 欧美丰满少妇xxxxx高潮对白| 欧美剧情片在线观看| 91精品国产手机| 日韩一区二区影院| 精品国产免费久久| 久久精品欧美一区二区三区麻豆| 国产无人区一区二区三区| 中文字幕二三区不卡| 亚洲欧美综合色| 亚洲电影在线免费观看| 午夜精品123| 精品亚洲porn| av中文一区二区三区| 在线免费不卡电影| 91精品国产欧美日韩| 精品国产乱码久久久久久久| 欧美国产亚洲另类动漫| 亚洲男人的天堂av| 日本三级亚洲精品| 国产成人免费9x9x人网站视频| 91亚洲精品久久久蜜桃网站| 欧美精品三级日韩久久| 久久综合五月天婷婷伊人| 中文字幕免费一区| 亚洲一区二区三区免费视频| 久久se这里有精品| av亚洲精华国产精华精华| 欧美性色aⅴ视频一区日韩精品| 欧美一区二区黄| 国产片一区二区| 亚洲gay无套男同| 国产成人亚洲精品狼色在线| 欧美日韩一级黄| 中文字幕欧美区| 午夜精品久久久久影视| 国产福利不卡视频| 欧美日韩黄色影视| 国产精品久久久久一区二区三区共| 午夜精品福利久久久| 成人污视频在线观看| 678五月天丁香亚洲综合网| 国产三级精品视频| 日日夜夜一区二区| 97久久精品人人做人人爽| 日韩免费观看高清完整版在线观看| 亚洲欧美国产77777| 国产一区二区三区蝌蚪| 欧美男男青年gay1069videost| 国产精品视频yy9299一区| 七七婷婷婷婷精品国产| 色综合天天综合| 国产日韩欧美a| 亚洲成人一区二区| 美女网站在线免费欧美精品| 欧美亚洲日本国产| 26uuu国产一区二区三区| 国产精品你懂的| 韩国v欧美v亚洲v日本v| 色综合中文字幕| 精品国产91久久久久久久妲己 | 日韩三级免费观看| 国内精品伊人久久久久av一坑| 欧美精品一区二区三区在线| jizzjizzjizz欧美| 成人精品视频一区二区三区尤物| 日韩午夜小视频| 一区二区欧美视频| 性做久久久久久| 99久久精品免费| 67194成人在线观看| 亚洲国产精品一区二区www在线| 国产精品99久久久久| 欧美在线免费观看视频| 精品久久99ma| 久久99蜜桃精品| 在线中文字幕一区| 国产日韩av一区| 亚洲成人精品一区二区| 欧美三级欧美一级| ...xxx性欧美| 国产成人免费在线观看| 欧美日韩一区中文字幕| 亚洲一区在线电影| 96av麻豆蜜桃一区二区| 久久精品欧美一区二区三区不卡 | 欧美制服丝袜第一页| 国产欧美视频一区二区| 国产真实乱对白精彩久久| 欧美日韩高清不卡| 亚洲精品乱码久久久久| 成人少妇影院yyyy| 中文字幕在线不卡国产视频| 国产在线视频一区二区三区| 欧美成人福利视频| 日本欧美加勒比视频| 精品理论电影在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美性色欧美a在线播放| 亚洲人成网站影音先锋播放| 欧美午夜免费电影| 亚洲综合自拍偷拍| 欧美自拍丝袜亚洲| 亚洲一区二区三区美女| 欧美一级黄色片| 久久国产精品99久久久久久老狼| 欧美日韩国产一区| 婷婷国产v国产偷v亚洲高清| 欧美偷拍一区二区| 精东粉嫩av免费一区二区三区| 精品久久久久久亚洲综合网| 麻豆精品一区二区| 国产无人区一区二区三区| 成人激情动漫在线观看|