浏览代码

修复通过查询表单设计器创建查询表单在翻页时表单中输入项丢失问题

master
jacky6024 7 年前
父节点
当前提交
20c0a4d6e2
  1. 2
      ureport2-console/src/main/java/com/bstek/ureport/console/html/HtmlPreviewServletAction.java
  2. 4
      ureport2-core/src/main/java/com/bstek/ureport/definition/ReportDefinition.java
  3. 11
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/CheckboxInputComponent.java
  4. 4
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/DateInputComponent.java
  5. 11
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/RadioInputComponent.java
  6. 7
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/RenderContext.java
  7. 11
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/SelectInputComponent.java
  8. 4
      ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/TextInputComponent.java
  9. 4
      ureport2-core/src/main/java/com/bstek/ureport/export/ExportManagerImpl.java

2
ureport2-console/src/main/java/com/bstek/ureport/console/html/HtmlPreviewServletAction.java

@ -307,7 +307,7 @@ public class HtmlPreviewServletAction extends RenderPageServletAction {
htmlReport.setContent(html);
htmlReport.setTotalPage(report.getPages().size());
htmlReport.setStyle(reportDefinition.getStyle());
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap()));
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap(),parameters));
htmlReport.setReportAlign(report.getPaper().getHtmlReportAlign().name());
htmlReport.setHtmlIntervalRefreshValue(report.getPaper().getHtmlIntervalRefreshValue());
}else{

4
ureport2-core/src/main/java/com/bstek/ureport/definition/ReportDefinition.java

@ -216,11 +216,11 @@ public class ReportDefinition implements Serializable{
return sb.toString();
}
public SearchFormData buildSearchFormData(Map<String,Dataset> datasetMap){
public SearchFormData buildSearchFormData(Map<String,Dataset> datasetMap,Map<String, Object> parameters){
if(searchForm==null){
return null;
}
RenderContext context=new RenderContext(datasetMap);
RenderContext context=new RenderContext(datasetMap,parameters);
SearchFormData data=new SearchFormData();
data.setFormPosition(searchForm.getFormPosition());
data.setHtml(searchForm.toHtml(context));

11
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/CheckboxInputComponent.java

@ -15,6 +15,7 @@
******************************************************************************/
package com.bstek.ureport.definition.searchform;
import java.util.Arrays;
import java.util.List;
/**
@ -28,11 +29,17 @@ public class CheckboxInputComponent extends InputComponent {
String inputHtml(RenderContext context) {
StringBuilder sb=new StringBuilder();
String name=getBindParameter();
Object pvalue=context.getParameter(name)==null ? "" : context.getParameter(name);
String[] data=pvalue.toString().split(",");
List<String> list=Arrays.asList(data);
for(Option option:options){
String value=option.getValue();
String label=option.getLabel();
String checked=list.contains(value) ? "checked" : "";
if(this.optionsInline){
sb.append("<span class='checkbox-inline' style='padding-top:0px'><input value='"+option.getValue()+"' type='checkbox' name='"+name+"'>"+option.getLabel()+"</span>");
sb.append("<span class='checkbox-inline' style='padding-top:0px'><input value='"+value+"' type='checkbox' "+checked+" name='"+name+"'>"+label+"</span>");
}else{
sb.append("<span class='checkbox'><input type='checkbox' value='"+option.getValue()+"' name='"+name+"' style='margin-left: auto'><span style=\"margin-left:15px\">"+option.getLabel()+"</span></span>");
sb.append("<span class='checkbox'><input type='checkbox' value='"+value+"' name='"+name+"' "+checked+" style='margin-left: auto'><span style=\"margin-left:15px\">"+label+"</span></span>");
}
}
return sb.toString();

4
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/DateInputComponent.java

@ -54,9 +54,11 @@ public class DateInputComponent extends InputComponent {
@Override
public String inputHtml(RenderContext context) {
String name=getBindParameter();
Object value=context.getParameter(name)==null ? "" : context.getParameter(name);
StringBuffer sb=new StringBuffer();
sb.append("<div id='"+context.buildComponentId(this)+"' class='input-group date'>");
sb.append("<input type='text' style=\"padding:3px;height:28px\" name='"+getBindParameter()+"' class='form-control'>");
sb.append("<input type='text' style=\"padding:3px;height:28px\" name='"+name+"' value=\""+value+"\" class='form-control'>");
sb.append("<span class='input-group-addon' style=\"font-size:12px\"><span class='glyphicon glyphicon-calendar'></span></span>");
sb.append("</div>");
return sb.toString();

11
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/RadioInputComponent.java

@ -15,6 +15,7 @@
******************************************************************************/
package com.bstek.ureport.definition.searchform;
import java.util.Arrays;
import java.util.List;
/**
@ -28,12 +29,18 @@ public class RadioInputComponent extends InputComponent {
String inputHtml(RenderContext context) {
StringBuilder sb=new StringBuilder();
String name=getBindParameter();
Object pvalue=context.getParameter(name)==null ? "" : context.getParameter(name);
String[] data=pvalue.toString().split(",");
List<String> list=Arrays.asList(data);
sb.append("<div>");
for(Option option:options){
String value=option.getValue();
String label=option.getLabel();
String checked=list.contains(value) ? "checked" : "";
if(this.optionsInline){
sb.append("<span class='checkbox-inline' style='padding-top:0px;padding-left:2px;padding-top:0px'><input value='"+option.getValue()+"' type='radio' name='"+name+"'> "+option.getLabel()+"</span>");
sb.append("<span class='checkbox-inline' style='padding-top:0px;padding-left:2px;padding-top:0px'><input value='"+value+"' "+checked+" type='radio' name='"+name+"'> "+label+"</span>");
}else{
sb.append("<span class='checkbox'><input value='"+option.getValue()+"' type='radio' name='"+name+"' style='margin-left: auto'> <span style=\"margin-left:15px\">"+option.getLabel()+"</span></span>");
sb.append("<span class='checkbox'><input value='"+value+"' type='radio' "+checked+" name='"+name+"' style='margin-left: auto'> <span style=\"margin-left:15px\">"+label+"</span></span>");
}
}
sb.append("</div>");

7
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/RenderContext.java

@ -27,14 +27,19 @@ import com.bstek.ureport.build.Dataset;
public class RenderContext {
private int id=0;
private Map<String,Dataset> datasetMap;
private Map<String, Object> parameters;
private Map<Component,String> componentMap=new HashMap<Component,String>();
private Map<String,Object> metadata=new HashMap<String,Object>();
public RenderContext(Map<String,Dataset> datasetMap) {
public RenderContext(Map<String,Dataset> datasetMap,Map<String, Object> parameters) {
this.datasetMap=datasetMap;
this.parameters=parameters;
}
public Dataset getDataset(String datasetName) {
return datasetMap.get(datasetName);
}
public Object getParameter(String name){
return parameters.get(name);
}
public String buildComponentId(Component component){
if(componentMap.containsKey(component)){
return componentMap.get(component);

11
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/SelectInputComponent.java

@ -35,8 +35,10 @@ public class SelectInputComponent extends InputComponent {
private List<Option> options;
@Override
String inputHtml(RenderContext context) {
String name=getBindParameter();
Object pvalue=context.getParameter(name)==null ? "" : context.getParameter(name);
StringBuilder sb=new StringBuilder();
sb.append("<select style=\"padding:3px;height:28px\" id='"+context.buildComponentId(this)+"' name='"+getBindParameter()+"' class='form-control'>");
sb.append("<select style=\"padding:3px;height:28px\" id='"+context.buildComponentId(this)+"' name='"+name+"' class='form-control'>");
if(useDataset && StringUtils.isNotBlank(dataset)){
Dataset ds=context.getDataset(dataset);
if(ds==null){
@ -45,11 +47,14 @@ public class SelectInputComponent extends InputComponent {
for(Object obj:ds.getData()){
Object label=Utils.getProperty(obj, labelField);
Object value=Utils.getProperty(obj, valueField);
sb.append("<option value='"+value+"'>"+label+"</option>");
String selected=value.equals(pvalue) ? "selected" : "";
sb.append("<option value='"+value+"' "+selected+">"+label+"</option>");
}
}else{
for(Option option:options){
sb.append("<option value='"+option.getValue()+"'>"+option.getLabel()+"</option>");
String value=option.getValue();
String selected=value.equals(pvalue) ? "selected" : "";
sb.append("<option value='"+value+"' "+selected+">"+option.getLabel()+"</option>");
}
}
sb.append("</select>");

4
ureport2-core/src/main/java/com/bstek/ureport/definition/searchform/TextInputComponent.java

@ -22,7 +22,9 @@ package com.bstek.ureport.definition.searchform;
public class TextInputComponent extends InputComponent {
@Override
String inputHtml(RenderContext context) {
return "<input type='text' style=\"padding:3px;height:28px\" id='"+context.buildComponentId(this)+"' name='"+getBindParameter()+"' class='form-control'>";
String name=getBindParameter();
Object pvalue=context.getParameter(name)==null ? "" : context.getParameter(name);
return "<input type='text' value=\""+pvalue+"\" style=\"padding:3px;height:28px\" id='"+context.buildComponentId(this)+"' name='"+getBindParameter()+"' class='form-control'>";
}
@Override
public String initJs(RenderContext context) {

4
ureport2-core/src/main/java/com/bstek/ureport/export/ExportManagerImpl.java

@ -50,7 +50,7 @@ public class ExportManagerImpl implements ExportManager {
String content=htmlProducer.produce(report);
htmlReport.setContent(content);
htmlReport.setStyle(reportDefinition.getStyle());
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap()));
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap(),parameters));
htmlReport.setReportAlign(report.getPaper().getHtmlReportAlign().name());
htmlReport.setChartDatas(report.getContext().getChartDataMap().values());
htmlReport.setHtmlIntervalRefreshValue(report.getPaper().getHtmlIntervalRefreshValue());
@ -76,7 +76,7 @@ public class ExportManagerImpl implements ExportManager {
HtmlReport htmlReport=new HtmlReport();
htmlReport.setContent(content);
htmlReport.setStyle(reportDefinition.getStyle());
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap()));
htmlReport.setSearchFormData(reportDefinition.buildSearchFormData(report.getContext().getDatasetMap(),parameters));
htmlReport.setPageIndex(pageIndex);
htmlReport.setTotalPage(pageData.getTotalPages());
htmlReport.setReportAlign(report.getPaper().getHtmlReportAlign().name());

正在加载...
取消
保存