67,512
社区成员
发帖
与我相关
我的任务
分享
public class HtmlValueTypeOutput extends UIComponentBase {
public static final String COMPONENT_TYPE = "component.HtmlValueTypeOutput";
public static final String COMPONENT_FAMILY = "component.HtmlValueTypeOutput";
private Object value;
public HtmlValueTypeOutput() {
super();
this.setRendererType(null);
}
public Object getValue() {
if (this.value != null) {
return value;
}
ValueExpression _ve = this.getValueExpression("value");
if (_ve != null) {
return _ve.getValue(getFacesContext().getELContext());
} else {
return null;
}
}
public void setValue(Object value) {
this.value = value;
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
if (!this.isRendered()) {
return;
}
Util.notNull("value", getValue());
ResponseWriter writer = context.getResponseWriter();
writer.startElement("span", this);
writer.write(this.getAttributes().get("value").getClass().getName());
writer.endElement("span");
}
@Override
public void restoreState(FacesContext context, Object state) {
Object[] _values = (Object[]) state;
super.restoreState(context, _values[0]);
this.value = (Integer) _values[1];
}
@Override
public Object saveState(FacesContext context) {
Object[] _values = new Object[2];
_values[0] = super.saveState(context);
_values[1] = value;
return _values;
}
@Override
public String getFamily() {
return COMPONENT_FAMILY;
}
public class ValueTypeOutputTag extends UIComponentELTag {
private ValueExpression value;
public void setValue(ValueExpression value) {
this.value = value;
}
@Override
protected void setProperties(UIComponent component) {
super.setProperties(component);
if (value != null) {
component.setValueExpression("value", value);
}
}
@Override
public String getComponentType() {
return HtmlValueTypeOutput.COMPONENT_TYPE;
}
@Override
public String getRendererType() {
return null;
}
@Override
public void release() {
super.release();
this.value = null;
}
}
<tag>
<name>valueTypeOutput</name>
<tag-class>component.taglib.ValueTypeOutputTag
</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>true</required>
<deferred-value>
<type>java.lang.Object</type>
</deferred-value>
</attribute>
</tag>
<ao:valueTypeOutput value="#{helloBean}" />