📄 uidata.java
字号:
} } } } } private void process(FacesContext context, UIComponent component, int processAction) { switch (processAction) { case PROCESS_DECODES : component.processDecodes(context); break; case PROCESS_VALIDATORS : component.processValidators(context); break; case PROCESS_UPDATES : component.processUpdates(context); break; } } private DataModel getDataModel() { UIData embeddingUIData = getEmbeddingUIData(); if (embeddingUIData != null) { //This UIData is nested in another UIData, so we must not //do simple caching of the current DataModel. We must associate //the DataModel that we want to cache with the clientId of the //embedding UIData. This clientId will be different for every //row of the embedding UIData. if (_dataModelMap == null) { _dataModelMap = new HashMap(); } String embeddingClientId = embeddingUIData.getClientId(FacesContext.getCurrentInstance()); DataModel dataModel = (DataModel) _dataModelMap.get(embeddingClientId); if (dataModel == null) { dataModel = createDataModel(); _dataModelMap.put(embeddingClientId, dataModel); } return dataModel; } else { //This UIData is not nested within another UIData. So there //is no need for the DataModel Map. if (_dataModel == null) { _dataModel = createDataModel(); } return _dataModel; } } /** * Creates a new DataModel around the current value. */ private DataModel createDataModel() { Object value = getValue(); if (value == null) { return EMPTY_DATA_MODEL; } else if (value instanceof DataModel) { return (DataModel) value; } else if (value instanceof List) { return new ListDataModel((List) value); } else if (value instanceof Collection) { return new ListDataModel(new ArrayList((Collection) value)); } else if (OBJECT_ARRAY_CLASS.isAssignableFrom(value.getClass())) { return new ArrayDataModel((Object[]) value); } else if (value instanceof ResultSet) { return new ResultSetDataModel((ResultSet) value); } else if (value instanceof Result) { return new ResultDataModel((Result) value); } else { return new ScalarDataModel(value); } } /** * Looks for an embedding UIData component * @return the embedding UIData or null */ private UIData getEmbeddingUIData() { if (_isEmbeddedUIData == null) { UIComponent findParentUIData = getParent(); while (findParentUIData != null && !(findParentUIData instanceof UIData)) { findParentUIData = findParentUIData.getParent(); } if (findParentUIData != null) { _embeddingUIData = (UIData) findParentUIData; _isEmbeddedUIData = Boolean.TRUE; } else { _isEmbeddedUIData = Boolean.FALSE; } } if (_isEmbeddedUIData.booleanValue()) { return _embeddingUIData; } else { return null; } } private static class UIDataRowIndexState { private UIData _uiData; private int _rowIndex; public UIDataRowIndexState(UIData uiData) { _uiData = uiData; _rowIndex = _uiData._rowIndex; } public void restore() { _uiData._rowIndex = _rowIndex; } } private static class FacesEventWrapper extends FacesEvent { private FacesEvent _wrappedFacesEvent; private int _rowIndex; public FacesEventWrapper(FacesEvent facesEvent, int rowIndex, UIData redirectComponent) { super(redirectComponent); _wrappedFacesEvent = facesEvent; _rowIndex = rowIndex; } public PhaseId getPhaseId() { return _wrappedFacesEvent.getPhaseId(); } public void setPhaseId(PhaseId phaseId) { _wrappedFacesEvent.setPhaseId(phaseId); } public void queue() { _wrappedFacesEvent.queue(); } public String toString() { return _wrappedFacesEvent.toString(); } public boolean isAppropriateListener(FacesListener faceslistener) { return _wrappedFacesEvent.isAppropriateListener(faceslistener); } public void processListener(FacesListener faceslistener) { _wrappedFacesEvent.processListener(faceslistener); } public FacesEvent getWrappedFacesEvent() { return _wrappedFacesEvent; } public int getRowIndex() { return _rowIndex; } } private static final DataModel EMPTY_DATA_MODEL = new DataModel() { public boolean isRowAvailable() { return false; } public int getRowCount() { return 0; } public Object getRowData() { throw new IllegalArgumentException(); } public int getRowIndex() { return -1; } public void setRowIndex(int i) { if (i < -1) throw new IllegalArgumentException(); } public Object getWrappedData() { return null; } public void setWrappedData(Object obj) { if (obj == null) return; //Clearing is allowed throw new UnsupportedOperationException( this.getClass().getName() + " UnsupportedOperationException"); } }; private static class UIDataRowState implements Cloneable, Serializable { private HashMap _clientIdsToChildUIDataStates = new HashMap(); private HashMap _clientIdsToChildEVHStates = new HashMap(); public UIDataRowState() { } public UIDataRowState(UIDataRowState initial) { for (Iterator i = initial._clientIdsToChildEVHStates.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); EditableValueHolderState initialState = (EditableValueHolderState) entry.getValue(); _clientIdsToChildEVHStates.put(entry.getKey(), new EditableValueHolderState(initialState)); } for (Iterator i = initial._clientIdsToChildUIDataStates.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); UIDataRowState initialState = (UIDataRowState) entry.getValue(); _clientIdsToChildEVHStates.put(entry.getKey(), new UIDataRowState(initialState)); } } } private static class EditableValueHolderState implements Serializable { private Object _localValue; private boolean _localValueSet; private boolean _valid; private Object _submittedValue; public EditableValueHolderState(EditableValueHolder vh) { _localValue = vh.getLocalValue(); _localValueSet = vh.isLocalValueSet(); _valid = vh.isValid(); _submittedValue = vh.getSubmittedValue(); } public EditableValueHolderState(EditableValueHolderState state) { _localValue = state._localValue; _localValueSet = state._localValueSet; _valid = state._valid; _submittedValue = state._submittedValue; } public void restore(EditableValueHolder vh) { vh.setValue(_localValue); vh.setLocalValueSet(_localValueSet); vh.setValid(_valid); vh.setSubmittedValue(_submittedValue); } } public void setValue(Object value) { _value = value; _dataModel = null; } public Object saveState(FacesContext context) { Object[] values = new Object[STATE_SIZE]; values[SUPER_STATE_INDEX] = super.saveState(context); values[FIRST_INDEX] = _first; values[ROWS_INDEX] = _rows; values[VALUE_INDEX] = _value; values[VAR_INDEX] = _var; values[ROW_STATE_INDEX] = _rowState; return ((Object) (values)); } public void restoreState(FacesContext context, Object state) { Object[] values = (Object[]) state; super.restoreState(context, values[0]); _first = (Integer) values[FIRST_INDEX]; _rows = (Integer) values[ROWS_INDEX]; _value = (Object) values[VALUE_INDEX]; _var = (String) values[VAR_INDEX]; _rowState = (UIDataRowState) values[ROW_STATE_INDEX]; // restore state means component was already rendered at least once: _firstTimeRendered = false; } //------------------ GENERATED CODE BEGIN (do not modify!) -------------------- public static final String COMPONENT_TYPE = "javax.faces.Data"; public static final String COMPONENT_FAMILY = "javax.faces.Data"; private static final String DEFAULT_RENDERER_TYPE = "javax.faces.Table"; private static final int DEFAULT_FIRST = 0; private static final int DEFAULT_ROWS = 0; private Integer _first = null; private Integer _rows = null; private Object _value = null; public UIData() { setRendererType(DEFAULT_RENDERER_TYPE); } public String getFamily() { return COMPONENT_FAMILY; } public void setFirst(int first) { _first = new Integer(first); } public int getFirst() { if (_first != null) return _first.intValue(); ValueBinding vb = getValueBinding("first"); Integer v = vb != null ? (Integer) vb.getValue(getFacesContext()) : null; return v != null ? v.intValue() : DEFAULT_FIRST; } public int getRows() { if (_rows != null) return _rows.intValue(); ValueBinding vb = getValueBinding("rows"); Integer v = vb != null ? (Integer) vb.getValue(getFacesContext()) : null; return v != null ? v.intValue() : DEFAULT_ROWS; } public Object getValue() { if (_value != null) return _value; ValueBinding vb = getValueBinding("value"); return vb != null ? (Object) vb.getValue(getFacesContext()) : null; } //------------------ GENERATED CODE END ---------------------------------------}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -