[Tapestry5] 多选框组件

zdl39 2009-08-11

看了这么久的javaeye,也冒个泡,把以前做的一个多选框组件贡献一下


import java.util.HashMap;

import org.apache.tapestry5.Binding;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.ValidationTracker;
import org.apache.tapestry5.annotations.AfterRender;
import org.apache.tapestry5.annotations.BeginRender;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Mixin;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.corelib.base.AbstractField;
import org.apache.tapestry5.corelib.mixins.RenderDisabled;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;

/**
* 模块名称: 多选框
* 模块功能: 多选框
* 编   写:  zdl
* 日   期:  2008.10.10
*/

public class groupCheckbox extends AbstractField {
/**
* The value to be read or updated. If not bound, the Checkbox will attempt
* to edit a property of its container whose name matches the component's
* id.
*/
@Parameter(required = true)
private String value;

@Parameter(required = false, allowNull = true)
private String read;

@Inject
private Request request;

@SuppressWarnings("unused")
@Mixin
private RenderDisabled renderDisabled;

@Inject
private ComponentResources resources;

@Environmental
private ValidationTracker tracker;

@Parameter(required = true)
private String title;

@Persist
private String groupchecknum;

Binding defaultTitle() {
return createDefaultParameterBinding("title");
}

Binding defaultValue() {
return createDefaultParameterBinding("value");
}

@BeginRender
void begin(MarkupWriter writer) {

String groupval = this.value;
String[] titles = title.split(",");
String cname = getControlName();
String cid = getClientId();
groupchecknum = String.valueOf(titles.length);
boolean checked = true;
if(read==null)read="";
if(read.equals(""))read="false";



if (groupval == null) {
for (int i = 0; i < titles.length; i++) {
writer.write(titles[i]);
if(read.equals("false")){
writer.element("input", "type", "checkbox", "name", cname + "_"
+ i, "id", cid + "_" + i, "checked", null,"value",titles[i]);
}else{
writer.element("input", "type", "checkbox", "name", cname + "_"
+ i, "id", cid + "_" + i, "checked", null,"value",titles[i],"disabled",read);
}
writer.end();
writespace(writer);
}
} else {
String[] cval = groupval.split(",");
HashMap hm=new HashMap();
for(int i=0;i<cval.length;i++){
hm.put(cval[i],cval[i]);
}
for (int i = 0; i < titles.length; i++) {
if(hm.get(titles[i])!=null){
writer.write(titles[i]);
if(read.equals("false")){
writer.element("input", "type", "checkbox", "name", cname
+ "_" + i, "id", cid + "_" + i, "checked", "checked","value",titles[i]);
}else{
writer.element("input", "type", "checkbox", "name", cname
+ "_" + i, "id", cid + "_" + i, "checked", "checked","value",titles[i],"disabled",read);}
writer.end();
writespace(writer);
}else{
writer.write(titles[i]);
if(read.equals("false")){
writer.element("input", "type", "checkbox", "name", cname
+ "_" + i, "id", cid + "_" + i, "checked", null,"value",titles[i]);
}else{
writer.element("input", "type", "checkbox", "name", cname
+ "_" + i, "id", cid + "_" + i, "checked", null,"value",titles[i],"disabled",read);}
writer.end();
writespace(writer);
}
  }
}
}



void writespace(MarkupWriter writer){
writer.writeRaw("&nbsp;&nbsp;");
}

@AfterRender
void after(MarkupWriter writer) {

}

@Override
protected void processSubmission(String elementName) {

String postedValue = "";
String cname = getControlName();
boolean b;
String val = "";
StringBuffer sb = new StringBuffer();
cname = getControlName();
for (int i = 0; i < Integer.parseInt(groupchecknum); i++) {
postedValue = request.getParameter(cname + "_" + i);
val = postedValue == null ? "0" : postedValue;
if(!val.equals("0")){
   sb.append(val + ",");
}
}
value = sb.toString();
if(value!=null && !value.equals("")){
value = value.substring(0, value.length() - 1);
}
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getGroupchecknum() {
return groupchecknum;
}

public void setGroupchecknum(String groupchecknum) {
this.groupchecknum = groupchecknum;
}

}

 

Global site tag (gtag.js) - Google Analytics