??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区四区 国产欧美久久一区二区三区 ,欧美日韩一二三区,国产精品1区2区在线观看http://www.aygfsteel.com/jnbzwm/category/47055.html敏捷是一条很长的路,摸烦(ch)着前进着zh-cnTue, 05 Apr 2011 13:18:23 GMTTue, 05 Apr 2011 13:18:23 GMT60freemarker数字格式化引入的问题http://www.aygfsteel.com/jnbzwm/archive/2010/12/29/341910.html??/dc:creator>??/author>Wed, 29 Dec 2010 06:54:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/12/29/341910.htmlhttp://www.aygfsteel.com/jnbzwm/comments/341910.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/12/29/341910.html#Feedback4http://www.aygfsteel.com/jnbzwm/comments/commentRss/341910.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/341910.html问题
freemarker在解析数据格式的时候,默认数字按3位来分割Q例?000被格式化?,000Q这样做看似观Q但在实际操作时候会(x)带来问题。例如我一个页面有一个元素,该元素的值由后台l定且超q?000Q那么当我要使用q个元素的值的时候,便会(x)出现问题?br /> 例如Q我在ftl文g中这样写Q?br />
<input type="hidden" id="testElement" name="testElement" value="${size}" />
假设后台l定的size?000?br />
然后我在js里用这个testElement元素的倹{?br />
var t = $("#testElement");
alert(t);
alert(parseInt(t));
alert(Number(t));


得到的值是Q?br /> 1,000
1
NaN

q下(zhn)剧?jin),没有一个是我想要的数值类?000Q这让我情何以堪啊?br />
我之前有一个随W,ZStruts2、Freemarker的分늻件实?附工E源? Q便因ؓ(f)freemarker的数字格式化问题Q存在一个bug?br /> 在数据超q?000时候,点击下一,便会(x)报错。原因是?,000传到?jin)后収ͼ当作是总记录数Q而这个值ƈ非数倹{?br />
解决问题
* 在模板中直接?toString()转化数字为字W串Q如Q?{size.toString()}Q?br /> * 在freemarker配置文gfreemarker.properties(在类路径下即??lt;#setting number_format="#">Q?br /> * 在模板中直接?lt;#setting number_format="#">Q?br /> * 通过freemarker.template.Configuration的config.setNumberFormat("#")来设定freemarkerҎ(gu)值的格式?

其实后三U方法的思\是一致的Q只是实现方法不同而已。如果应用中已经存在?nbsp;freemarker.properties q|了(jin)其他的属性,可以在这里配|,否则推荐使用最后一U方法?br />
最后我是用最后一U方法解决的问题。分늻件上的问题(sh)解决?jin)?/span>



]]>
ZStruts2、Freemarker的分늻件实?附工E源?http://www.aygfsteel.com/jnbzwm/archive/2010/12/01/339528.html??/dc:creator>??/author>Wed, 01 Dec 2010 09:35:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/12/01/339528.htmlhttp://www.aygfsteel.com/jnbzwm/comments/339528.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/12/01/339528.html#Feedback0http://www.aygfsteel.com/jnbzwm/comments/commentRss/339528.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/339528.html本文为原创,Ƣ迎转蝲Q{载请注明出处BlogJava?/span>

本次分页lg着重于面QF(tun)reemarker部分Q、及(qing)Action部分?br /> 至于Service?qing)持久层处理Q只是做?jin)一个模拟的实现Q实际开发中Q我是应用了(jin)iBatisQ封装了(jin)分页调用?br /> ׃用法有所不同Q所以就不放在源码范围内Q也不在q里介绍?jin)?br /> q里的分功能只提供?上一c(din)下一c(din)指定页 的分,但在分页Java代码中包含了(jin) 首页、末늚实现。有需要的可自行添加?br />

分页的效果如图:(x)



分页实现代码介绍Q?br /> 1.pagination.ftl 分页lg 面部分?br />
2.PageSupport.java 分页A(ch)ction部分?br />
3.WebPager.java 计算分页动作?br />
4.Pager.java 保存分页信息Q由Action传递到ServiceQ根据Pager对象取得数据?br />
5.MockDataBase.java 模拟DaoQ实现分处理?br />

使用该组件的Ҏ(gu)如下Q?br />

W一步:(x)引入分页lg

<#include "/ftl/ecs/pagination.ftl" />
分页lg使用?jin)Freemarker的宏?br />

W二步:(x)在ftl文g中用分늻?/span>

分页lg需要输?个参敎ͼ分别为id、method、btnCssClass、cssClassQ其中id、method必须输入QbtnCssClass、cssClass可选。以下是参数详细说明Q?br /> 1.id : 分页lg的唯一标识?br /> 2.method : 分页用的Action。例如:(x)定义?jin)Action为PaginationQ则method输入 Pagination.actionQ若为动态方法调用,可输入Pagination!query.action
3.cssClass : 分页lg的class属性。例如cssClass="center"?br /> 4.btnCssClass : 分页lg按钮的class属性。例如btnCssClass="btn_history"?br />

<@pagination id="***" btnCssClass="***" cssClass="***" method="***.action">
<table>
<tr>
<td></td>
...
</tr>
</table>
</pagination>

[~辑]W三步:(x)l承分页cPageSupport

PageSupport.javal承自ActionSupport.javaQ在要分늚Ҏ(gu)中用PageSupport.java提供的List pageCall(String module, String target, Map dataMap)分页调用?br /> 通过setPageSize(int pageSize)Ҏ(gu)讑֮每页昄的记录数?br /> API详细说明Q?br /> 1.pageCall

 参数说明Q?
1) String module : 调用service的通道Q例如:(x)upf、esf?
2) String target : 要调用的service的方法,例如Qcom.ailk.ecs.service.TdupfPageService.selectAllUser?
3) Map dataMap : 输入参数?
q回D明:(x)
List : 面昄的数据记录?

2.setPageSize

 参数说明Q?
1) int pageSize : 每页昄记录数?

[~辑]
W四步:(x)Service代码中?/span>

在service装分页Dao或者分|法?/p> pagination.ftl代码:

<#macro pagination id method cssClass="" btnCssClass="" pageSize='10'>
<div id='${id}'>
<#nested> <#-- 要刷新的区域 -->

<div class="${cssClass}">
    
<input type="button" onclick="Pagination${id}.gotoPage('prev', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="上一? class="${btnCssClass}" />
    
&nbsp;&nbsp;?nbsp;${totalPages} ?/span>&nbsp;&nbsp;W?nbsp;${webPager.pageInfo.currentPage} ?/span>&nbsp;&nbsp;转到
    
<input type="text" id='${id}_inputPageNo' name='${id}_inputPageNo' size="6"/>?nbsp;&nbsp;&nbsp;
    
<input type="text" style="display:none"/>
    
<input type="button" onclick="Pagination${id}.gotoPage('input', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="定" class="${btnCssClass}" />
    
<input type="button" onclick="Pagination${id}.gotoPage('next', '${webPager.pageInfo.currentPage}', '${totalSize}');" value="下一? class="${btnCssClass}" />
</div>

<script>
if (!this.Pagination${id} ) {
    
this.Pagination${id} = {}

    
// 分页处理Ҏ(gu)
    Pagination${id}.gotoPage = function(action, c, t) {
        
var cmd = action;

        
// 当总记录数量小于等于每记录数量时Q分动作无?/span>
        if (t <= ${webPager.pageInfo.pageSize}{
            
return;
        }


        
// 定按钮处理
        if(action == 'input') {
            
var inValue = $("#${id}_inputPageNo").val();

            
if(inValue.match(/^[0-9]+$/&& parseInt(inValue) > 0{
                cmd 
= inValue;
            }

            
else {
                
// TODO 提示错误信息
                return ;
            }

        }


        $('#$
{id}').load(
            '$
{method} #${id}',
            
{action : cmd,
             totalSize : t,
             currentPage : c
            }

        );
    }
;
    
    
// h当前面
    Pagination${id}.refreshPage = function() {
        
//Pagination${id}.gotoPage('refresh');
        //scrollPage${id}('refresh', "${method}");
    }
;

    
// 늠输入框keyup事g
    //Pagination${id}.keyup = function(inputElem, currentPage, totalSize) {
        //if (inputElem.value.match(/^[0-9]+$/) && parseInt(inputElem.value) > 0) {
            //Pagination${id}.gotoPage(inputElem.value, currentPage, totalSize);
        //}
    //};
    
    
//$("#${id}_inputPageNo").keyup(function(event){
        //if(event.keyCode == 13) {
            //Pagination${id}.keyup(this, '${webPager.pageInfo.currentPage}', '${totalSize}');
        //}
    //});
}

</script>

</div>
</#macro>



?a href="http://www.aygfsteel.com/Files/jnbzwm/Pagination.zip">点击下蝲源码?br />
非maven化工E,自己扑֌吧?br /> lib包如图:(x)



]]>
解决 freemarker 变量没有值时抛出异常http://www.aygfsteel.com/jnbzwm/archive/2010/11/17/338251.html??/dc:creator>??/author>Wed, 17 Nov 2010 05:54:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/11/17/338251.htmlhttp://www.aygfsteel.com/jnbzwm/comments/338251.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/11/17/338251.html#Feedback0http://www.aygfsteel.com/jnbzwm/comments/commentRss/338251.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/338251.html
本文为原创,Ƣ迎转蝲Q{载请注明出处BlogJava?/span>

默认情况下,freemarker的变量必L|如果没有被赋值的变量在页面上使用׃(x)抛出异常Q出错的信息都会(x)昄在页面上Q让人感觉不爽(开发时q可以忍忍)(j)?/span> 
解决办法Q?/span>

Ҏ(gu)一、我们可以在面上用freemarker变量??nbsp;${xxx?if_exists} 来处理空值的情况Q或采用默认值的Ҏ(gu)避免此类问题。但每个freemarker变量都这样处理确实比较让人心(j)?ch),L(fng)以下Ҏ(gu)?/span>

Ҏ(gu)二、在c\径下 加入 freemarker.properties 文gQ里面配|?nbsp;classic_compatible=true?/span>

Ҏ(gu)三、通过freemarker.template.Configuration?nbsp;config.setClassicCompatible(true);通过源码我们看到Q其实方法二、方法三是思想是一致的Q只是实现方法不同而已。如果应用中已经存在?nbsp;freemarker.properties q|了(jin)其他的属性,可以在这里配|,否则推荐使用Ҏ(gu)三,毕竟没有每个应用的配|文件实在是都够多了(jin)?/span>

Ҏ(gu)四、在ftl文g内引?nbsp;<!--#setting classic_compatible=true-->?/span>

其他关于在spring中的配置q里q略。现在的目中没有用到?/span>

ȝQ方法四是需要在每个需要这样处理的面都要引入的,比较ȝ(ch)Q、还是选择使用 Ҏ(gu)二、方法三好了(jin)。但是方法二、方法三也不是万能的。例如我在action中定义一个MyBeancȝ对象?myBeanQMyBean中有Comp属性。在面上就?用如下语句用:(x)${myBean.comp}Q这里myBean可能为nullQcomp也可能ؓ(f)null。这时?p使用Ҏ(gu)一?jin)?/span>${(myBean.comp)!} ?nbsp;${(myBean.comp)?if_exists}?/span>



]]>
ZStruts2和freemarker的异常提CZ息的l一处理http://www.aygfsteel.com/jnbzwm/archive/2010/11/16/338179.html??/dc:creator>??/author>Tue, 16 Nov 2010 06:53:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/11/16/338179.htmlhttp://www.aygfsteel.com/jnbzwm/comments/338179.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/11/16/338179.html#Feedback0http://www.aygfsteel.com/jnbzwm/comments/commentRss/338179.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/338179.html阅读全文

]]>
վ֩ģ壺 | ګ| | | ͭ| ũ| | Ͽ| | | ԭƽ| | ګ| | ʯ| Т| | | ¬| | °Ͷ| | пǰ| º| | | | | ߰| ˿| | | | | | º| | ï| | | |