jsf自定义组件-jafyear选择年份

<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>

就是一个下拉框,可以配置选取的范围,用today表示当期年份,输入简单表达式。

package com.cfcc.jaf.webx.component.jafdate.jafyear;

import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;

/***/ /**
*年份选择框组件
*
@authorqinjinwei
*$date2007-9-12上午09:52:28
*/

public class JafYear extends UIComponentBase ... {

publicfinalStringJAF_DATE_FAMILY="jaf.jafdate";

publicStringgetFamily()...{
returnJAF_DATE_FAMILY;
}


publicObjectsaveState(FacesContextcontext)...{
Objectvalues[]
=newObject[1];
values[
0]=super.saveState(context);
returnvalues;
}


publicvoidrestoreState(FacesContextcontext,Objectstate)...{
Objectvalues[]
=(Object[])state;
super.restoreState(context,values[0]);

}


}

package com.cfcc.jaf.webx.component.jafdate.jafyear;

import java.io.IOException;
import java.util.Date;
import java.util.Map;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.el.ValueBinding;

import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer;

/***/ /**
*年份选择框组件renderer
*
@authorqinjinwei
*$date2007-9-12上午09:52:30
*/

public class JafYearRenderer extends HtmlRenderer ... {

publicvoidencodeEnd(FacesContextfacesContext,UIComponentcomponent)
throwsIOException...{

Stringsfrom
=(String)component.getAttributes().get("from");
Stringsto
=(String)component.getAttributes().get("to");
intifrom=convert(sfrom)+1900;
intito=convert(sto)+1900;
ResponseWriterwriter
=facesContext.getResponseWriter();
StringclientId
=component.getClientId(facesContext);


ValueBindingvb
=component.getValueBinding("value");
Stringsyear
=(String)vb.getValue(facesContext);
if(syear==null)
...{
syear
=""+(newDate().getYear()+1900);
}


intyear=Integer.parseInt(syear);

writer.write(
""+clientId+""name=""+clientId+""> ");
for(inti=ifrom;iito;i++)...{
writer.write(
" "+i+""");
if(year==i)
...{
writer.write(
"selected");
}

writer.write(
">"+i);
writer.write(
"
");
}

writer.write(
"
");
}


publicvoiddecode(FacesContextfacesContext,UIComponentuiComponent)
...{
MapparamMap
=facesContext.getExternalContext()
.getRequestParameterMap();
StringclientId
=uiComponent.getClientId(facesContext);
if(paramMap.containsKey(clientId))
...{
Stringvalue
=(String)paramMap
.get(clientId);

ValueBindingvb
=uiComponent.getValueBinding("value");
vb.setValue(facesContext,value);
System.out.println(clientId
+"valueis:"+value);
}

}


privateintconvert(Stringexp)...{

booleanbflagt=false;
booleanbflags=false;

Stringex
=exp.replaceAll("","");
if(ex.startsWith("today"))...{
bflagt
=true;
ex
=ex.replaceAll("today","");
}


if(ex.startsWith("+"))...{
bflags
=true;
}


ex
=ex.substring(1,ex.length());

intrvalue=Integer.parseInt(ex);
if(!bflags)
...{
rvalue
=-rvalue;
}


if(bflagt)
rvalue
=rvalue+newDate().getYear();

returnrvalue;
}

}

package com.cfcc.jaf.webx.component.jafdate.jafyear;

import javax.faces.application.Application;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.webapp.UIComponentTag;

/***/ /**
*年份选择框组件的标签
*
@authorqinjinwei
*$date2007-9-12上午09:52:36
*/

public class JafYearTag extends UIComponentTag
... {

publicStringgetComponentType()
...{
return"com.cfcc.jaf.webx.component.jafdate.jafyear.JafYear";
}


publicStringgetRendererType()
...{
return"com.cfcc.jaf.webx.component.jafdate.jafyear.JafYearRenderer";
}


privateStringfrom;
privateStringto;
privateStringvalue;

publicStringgetValue()...{
returnvalue;
}


publicvoidsetValue(Stringvalue)...{
this.value=value;
}


publicStringgetFrom()...{
returnfrom;
}


publicvoidsetFrom(Stringfrom)...{
this.from=from;
}


publicStringgetTo()...{
returnto;
}


publicvoidsetTo(Stringto)...{
this.to=to;
}


publicvoidsetProperties(UIComponentcomponent)...{
super.setProperties(component);
setStringProperty(component,
"from",from);
setStringProperty(component,
"to",to);
setStringProperty(component,
"value",value);
}


privatevoidsetStringProperty(UIComponentcomponent,StringattrName,
StringattrValue)
...{
if(attrValue==null)
return;
if(isValueReference(attrValue))...{
FacesContextcontext
=FacesContext.getCurrentInstance();
Applicationapplication
=context.getApplication();
ValueBindingbinding
=application.createValueBinding(attrValue);
component.setValueBinding(attrName,binding);
}
else...{
component.getAttributes().put(attrName,attrValue);
}

}


publicvoidrelease()...{
super.release();
from
=null;
to
=null;
value
=null;
}



}

tag>
name>jafyearname>
tag-class>
com.cfcc.jaf.webx.component.jafdate.jafyear.JafYearTag
tag-class>
body-content>emptybody-content>
attribute>
name>fromname>
required>truerequiredcolor: #0000ff
分享到:
评论
happmaoo
  • 浏览: 1291149 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

你可能感兴趣的:(apache,html,JSF,vb)