⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsspinnerrenderer.java

📁 struts框架的jsf组件的核心实用例子集合
💻 JAVA
字号:
package com.corejsf;import java.io.IOException;import java.text.MessageFormat;import java.util.Map;import javax.faces.component.EditableValueHolder;import javax.faces.component.UIComponent;import javax.faces.component.UIInput;import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter;import javax.faces.convert.ConverterException;import javax.faces.render.Renderer;public class JSSpinnerRenderer extends Renderer {   private static final String MORE = ".more";   private static final String LESS = ".less";   public Object getConvertedValue(FacesContext context, UIComponent component,         Object submittedValue) throws ConverterException {      return com.corejsf.util.Renderers.getConvertedValue(context, component,         submittedValue);   }      public void encodeBegin(FacesContext context, UIComponent component)          throws IOException {      ResponseWriter writer = context.getResponseWriter();      String clientId = component.getClientId(context);      String formId = com.corejsf.util.Renderers.getFormId(context, component);                 UIInput spinner = (UIInput)component;      Integer min = (Integer) component.getAttributes().get("minimum");      Integer max = (Integer) component.getAttributes().get("maximum");      Integer size = (Integer) component.getAttributes().get("size");           writer.write(MessageFormat.format(         "<input type=\"text\" name=\"{0}\" value=\"{1}\"",         new Object[] { clientId, spinner.getValue().toString() } ));            if (size != null)          writer.write(MessageFormat.format(            " size=\"{0}\"", new Object[] { size } ));      writer.write(MessageFormat.format("/>"         + "<script language=\"JavaScript\">"         + "document.forms[''{0}''][''{1}''].spin = function (increment) '{'"         + "var v = parseInt(this.value) + increment;"         + "if (isNaN(v)) return;"         + "if (\"min\" in this && v < this.min) return;"         + "if (\"max\" in this && v > this.max) return;"         + "this.value = v;"         + "};",         new Object[] { formId, clientId } ));      if (min != null) {         writer.write(MessageFormat.format(            "document.forms[''{0}''][''{1}''].min = {2};",            new Object[] { formId, clientId, min }));      }      if (max != null) {         writer.write(MessageFormat.format(            "document.forms[''{0}''][''{1}''].max = {2};",            new Object[] { formId, clientId, max }));      }      writer.write(MessageFormat.format(         "</script>"         + "<input type=\"button\" value=\"<\""         + "onclick=\"document.forms[''{0}''][''{1}''].spin(-1); }\"/>"         + "<input type=\"button\" value=\">\""         + "onclick=\"document.forms[''{0}''][''{1}''].spin(1); }\"/>",         new Object[] { formId, clientId }));   }      public void decode(FacesContext context, UIComponent component) {      EditableValueHolder spinner = (EditableValueHolder) component;      Map requestMap = context.getExternalContext().getRequestParameterMap();      String clientId = component.getClientId(context);      int increment;      if (requestMap.containsKey(clientId + MORE)) increment = 1;      else if (requestMap.containsKey(clientId + LESS)) increment = -1;      else increment = 0;      try {         int submittedValue             = Integer.parseInt((String) requestMap.get(clientId));         int newValue = getIncrementedValue(component, submittedValue,             increment);         spinner.setSubmittedValue("" + newValue);         spinner.setValid(true);      }      catch(NumberFormatException ex) {         // let the converter take care of bad input, but we still have          // to set the submitted value, or the converter won't have          // any input to deal with         spinner.setSubmittedValue((String) requestMap.get(clientId));      }   }   private void encodeDecrementButton(UIComponent spinner,          ResponseWriter writer, String clientId) throws IOException {      writer.startElement("input", spinner);      writer.writeAttribute("type", "submit", null);      writer.writeAttribute("name", clientId + LESS, null);      writer.writeAttribute("value", "<", "value");      writer.endElement("input");   }      private void encodeIncrementButton(UIComponent spinner,          ResponseWriter writer, String clientId) throws IOException {      writer.startElement("input", spinner);      writer.writeAttribute("type", "submit", null);      writer.writeAttribute("name", clientId + MORE, null);      writer.writeAttribute("value", ">", "value");      writer.endElement("input");   }      private int getIncrementedValue(UIComponent spinner, int submittedValue,         int increment) {      Integer minimum = (Integer) spinner.getAttributes().get("minimum");      Integer maximum = (Integer) spinner.getAttributes().get("maximum");      int newValue = submittedValue + increment;      if ((minimum == null || newValue >= minimum.intValue()) &&         (maximum == null || newValue <= maximum.intValue()))         return newValue;      else         return submittedValue;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -