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

📄 formcontrol.java

📁 这是远程web服务调用的一个包,可以将JSP直接作为服务
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    public String[] getOptionValues() {        return _selectionOptions.getValues();    }    public String[] getDisplayedOptions() {        return _selectionOptions.getDisplayedText();    }    /**     * Returns true if a single control can have multiple values.     **/    public boolean isMultiValued() {        return _multiSelect;    }    class Scriptable extends FormControl.Scriptable {        public Object get( String propertyName ) {            if (propertyName.equalsIgnoreCase( "options" )) {                return _selectionOptions;            } else if (propertyName.equalsIgnoreCase( "length" )) {                return new Integer( getOptionValues().length );            } else if (propertyName.equalsIgnoreCase( "value" )) {                return getSelectedValue();            } else if (propertyName.equalsIgnoreCase( "selectedIndex" )) {                return new Integer( _selectionOptions.getFirstSelectedIndex() );            } else {                return super.get( propertyName );            }        }        public Object get(int index) {            return _selectionOptions.get( index );        }        private String getSelectedValue() {            String[] values = getValues();            return (values.length == 0 ? "" : values[0] );        }        public void set( String propertyName, Object value ) {            if (propertyName.equalsIgnoreCase( "value" )) {                ArrayList values = new ArrayList();                values.add( value );                _selectionOptions.claimUniqueValues( values );            } else if (propertyName.equalsIgnoreCase( "selectedIndex" )) {                if (!(value instanceof Number)) throw new RuntimeException( "selectedIndex must be set to an integer" );                _selectionOptions.setSelectedIndex( ((Number) value).intValue() );            } else {                super.set( propertyName, value );            }        }    }    protected ScriptableDelegate newScriptable() {        return new Scriptable();    }    void updateRequiredParameters( Hashtable required ) {        if (isReadOnly()) required.put( getName(), getValues() );    }    void addValues( ParameterProcessor processor, String characterSet ) throws IOException {        if (isDisabled()) return;        for (int i = 0; i < getValues().length; i++) {            processor.addParameter( getName(), getValues()[i], characterSet );        }    }    void claimUniqueValue( List values ) {        boolean changed = _selectionOptions.claimUniqueValues( values );        if (changed) sendOnChangeEvent();    }    final void reset() {        _selectionOptions.reset();    }    static class Option extends ScriptableDelegate implements SelectionOption {        private String  _text;        private String  _value;        private boolean _defaultSelected;        private boolean _selected;        private int     _index;        private Options _container;        Option() {        }        Option( String text, String value, boolean selected ) {            _text = text;            _value = value;            _defaultSelected = _selected = selected;        }        void reset() {            _selected = _defaultSelected;        }        void addValueIfSelected( List list ) {            if (_selected) list.add( _value );        }        void setIndex( Options container, int index ) {            _container = container;            _index = index;        } //------------------------- SelectionOption methods ------------------------------        public void initialize( String text, String value, boolean defaultSelected, boolean selected ) {            _text = text;            _value = value;            _defaultSelected = defaultSelected;            _selected = selected;        }        public int getIndex() {            return _index;        }        public String getText() {            return _text;        }        public void setText( String text ) {            _text = text;        }        public String getValue() {            return _value;        }        public void setValue( String value ) {            _value = value;        }        public boolean isDefaultSelected() {            return _defaultSelected;        }        public void setSelected( boolean selected ) {            _selected = selected;            if (selected) _container.optionSet( _index );        }        public boolean isSelected() {            return _selected;        }    }    abstract class Options extends ScriptableDelegate implements SelectionOptions {        private Option[] _options;        Options( Node selectionNode ) {            NodeList nl = ((Element) selectionNode).getElementsByTagName( "option" );            _options = new Option[ nl.getLength() ];            for (int i = 0; i < _options.length; i++) {                final String displayedText = getValue( nl.item(i).getFirstChild() ).trim();                _options[i] = new Option( displayedText,                                          getOptionValue( nl.item(i), displayedText ),                                          nl.item(i).getAttributes().getNamedItem( "selected" ) != null );                _options[i].setIndex( this, i );            }        }        boolean claimUniqueValues( List values ) {            return claimUniqueValues( values, _options );        }        protected abstract boolean claimUniqueValues( List values, Option[] options );        final protected void reportNoMatches( List values ) {            if (!_listBox) throw new IllegalParameterValueException( getName(), (String) values.get(0), getOptionValues() );        }        String[] getSelectedValues() {            ArrayList list = new ArrayList();            for (int i = 0; i < _options.length; i++) {                _options[i].addValueIfSelected( list );            }            if (!_listBox && list.isEmpty() && _options.length > 0) list.add( _options[0].getValue() );            return (String[]) list.toArray( new String[ list.size() ] );        }        void reset() {            for (int i = 0; i < _options.length; i++) {                _options[i].reset();            }        }        String[] getDisplayedText() {            String[] displayedText = new String[ _options.length ];            for (int i = 0; i < displayedText.length; i++) displayedText[i] = _options[i].getText();            return displayedText;        }        String[] getValues() {            String[] values = new String[ _options.length ];            for (int i = 0; i < values.length; i++) values[i] = _options[i].getValue();            return values;        }        /**         * Selects the matching item and deselects the others.         **/        void setSelectedIndex( int index ) {            for (int i = 0; i < _options.length; i++) {                _options[ i ]._selected = (i == index);            }        }        /**         * Returns the index of the first item selected, or -1 if none is selected.         */        int getFirstSelectedIndex() {            for (int i = 0; i < _options.length; i++) {                if (_options[i].isSelected()) return i;            }            return noOptionSelectedIndex();        }        protected abstract int noOptionSelectedIndex();        public int getLength() {            return _options.length;        }        public void setLength( int length ) {            if (length < 0 || length >= _options.length) return;            Option[] newArray = new Option[ length ];            System.arraycopy( _options, 0, newArray, 0, length );            _options = newArray;        }        public void put( int i, SelectionOption option ) {            if (i < 0) return;            if (option == null) {                if (i >= _options.length) return;                deleteOptionsEntry( i );            } else {                if (i >= _options.length) {                    i = _options.length;                    expandOptionsArray();                }                _options[i] = (Option) option;                _options[i].setIndex( this, i );                if (option.isSelected()) ensureUniqueOption( _options, i);            }        }        protected abstract void ensureUniqueOption( Option[] options, int i );        private void deleteOptionsEntry( int i ) {            Option[] newArray = new Option[ _options.length-1 ];            System.arraycopy( _options, 0, newArray, 0, i );            System.arraycopy( _options, i+1, newArray, i, newArray.length - i );            _options = newArray;        }        private void expandOptionsArray() {            Option[] newArray = new Option[ _options.length+1 ];            System.arraycopy( _options, 0, newArray, 0, _options.length );            _options = newArray;        }        public Object get( int index ) {            return _options[ index ];        }        /** Invoked when an option is set true. **/        void optionSet( int i ) {            ensureUniqueOption( _options, i);        }        private String getOptionValue( Node optionNode, String displayedText ) {            NamedNodeMap nnm = optionNode.getAttributes();            if (nnm.getNamedItem( "value" ) != null) {                return getValue( nnm.getNamedItem( "value" ) );            } else {                return displayedText;            }        }        private String getValue( Node node ) {            return (node == null) ? "" : emptyIfNull( node.getNodeValue() );        }        private String emptyIfNull( String value ) {            return (value == null) ? "" : value;        }    }    class SingleSelectOptions extends Options {        public SingleSelectOptions( Node selectionNode ) {            super( selectionNode );        }        protected void ensureUniqueOption( Option[] options, int i ) {            for (int j = 0; j < options.length; j++) {                options[j]._selected = (i == j);            }        }        protected int noOptionSelectedIndex() {            return 0;        }        protected boolean claimUniqueValues( List values, Option[] options ) {            boolean changed = false;            for (int i = 0; i < values.size(); i++) {                String value = (String) values.get( i );                for (int j = 0; j < options.length; j++) {                    boolean selected = value.equals( options[j].getValue() );                    if (selected != options[j].isSelected()) changed = true;                    options[j].setSelected( selected );                    if (selected) {                        values.remove( value );                        for (++j; j < options.length; j++) options[j].setSelected( false );                        return changed;                    }                }            }            reportNoMatches( values );            return changed;        }    }    class MultiSelectOptions extends Options {        public MultiSelectOptions( Node selectionNode ) {            super( selectionNode );        }        protected void ensureUniqueOption( Option[] options, int i ) {}        protected int noOptionSelectedIndex() {            return -1;        }        protected boolean claimUniqueValues( List values, Option[] options ) {            boolean changed = false;            for (int i = 0; i < options.length; i++) {                final boolean newValue = values.contains( options[i].getValue() );                if (newValue != options[i].isSelected()) changed = true;                options[i].setSelected( newValue );                if (newValue) values.remove( options[i].getValue() );            }            return changed;        }    }}//============================= exception class IllegalParameterValueException ======================================/** * This exception is thrown on an attempt to set a parameter to a value not permitted to it by the form. **/class IllegalParameterValueException extends IllegalRequestParameterException {    IllegalParameterValueException( String parameterName, String badValue, String[] allowed ) {        _parameterName = parameterName;        _badValue      = badValue;        _allowedValues = allowed;    }    public String getMessage() {        StringBuffer sb = new StringBuffer(HttpUnitUtils.DEFAULT_TEXT_BUFFER_SIZE);        sb.append( "May not set parameter '" ).append( _parameterName ).append( "' to '" );        sb.append( _badValue ).append( "'. Value must be one of: { " );        for (int i = 0; i < _allowedValues.length; i++) {            if (i != 0) sb.append( ", " );            sb.append( _allowedValues[i] );        }        sb.append( " }" );        return sb.toString();    }    private String   _parameterName;    private String   _badValue;    private String[] _allowedValues;}//============================= exception class MissingParameterValueException ======================================/** * This exception is thrown on an attempt to remove a required value from a form parameter. **/class MissingParameterValueException extends IllegalRequestParameterException {    MissingParameterValueException( String parameterName, String missingValue, String[] proposed ) {        _parameterName  = parameterName;        _missingValue   = missingValue;        _proposedValues = proposed;    }    public String getMessage() {        StringBuffer sb = new StringBuffer(HttpUnitUtils.DEFAULT_TEXT_BUFFER_SIZE);        sb.append( "Parameter '" ).append( _parameterName ).append( "' must have the value '" );        sb.append( _missingValue ).append( "'. Attempted to set it to: { " );        for (int i = 0; i < _proposedValues.length; i++) {            if (i != 0) sb.append( ", " );            sb.append( _proposedValues[i] );        }        sb.append( " }" );        return sb.toString();    }    private String   _parameterName;    private String   _missingValue;    private String[] _proposedValues;}

⌨️ 快捷键说明

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