亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

美麗的錯誤

系統(tǒng) 1704 0

  “善意的謊言、美麗的錯誤”,這些事情在我們的生活及工作經(jīng)常都在發(fā)生。最近花了三天多的時間學(xué)習(xí)了EasyJF開源官網(wǎng)的Blog程序源碼,振奮人心之處就不說了,看過的都知道。同時也存在很多的錯誤,這些錯誤有的是由我不知何時親自導(dǎo)演,這里就撿一些“美麗”的錯誤及Bub來說說,為了自己以后不再犯這樣錯誤。

技術(shù)構(gòu)架: EasyJWeb+Spring2+JPA 視圖模板使用:Velocity

 1、很Cool的循環(huán)  來自:Blog的圈子顯示 錯誤等級★★★★★

#foreach($!subList?in?$!CommUtil.toRowChildList($myOnweCircle,2))
??
< tr >
?#foreach($!info?in?$subList)
?
< td >
$!info.title
</ td >
?#end
< tr >
?#end

  其中$myOnwerCircle是從后臺傳過來的一個List。這個程序是遍歷一個列集合,把集合的元素循環(huán)顯示到<tr>中,第行最多顯示兩列<td>。

  但無論如何,都無法得到想要的結(jié)果,由于準(zhǔn)備換成類似$BlogQuery.circleQuery.user($blog.owner).number(-1).list這樣的標(biāo)簽來查詢數(shù)據(jù),所以一直認(rèn)為是標(biāo)簽設(shè)計的問題。經(jīng)過后來的一陣折騰證明是腳本寫法的問題,你知道是哪些地方出的問題了嗎?先說明:$!CommUtil.toRowChildList這個標(biāo)簽沒任何問題。

2、easy的echo  來自:Blog的圈子顯示 錯誤等級★★★★★☆
  頁面內(nèi)容:

< span? class ="strong0" > $!info.title($!info.blogs.size()) </ span >< br >


  這里打算顯示圈子的主題以及圈子下面的blog數(shù)量。但如果不親身體會,鬼都不知道他會給你顯示什么出來。你知道嗎?

 3、非菜鳥的equals  來自:文章及照片評論

String?user? =! "" .equals(obj.getInputUser())? ? ?obj.getInputUser().getName()?:? " 匿名用戶 " ;?

  數(shù)據(jù)結(jié)構(gòu)永遠(yuǎn)就比算法重要,這個是不容質(zhì)疑的,可以搞出很漂亮的算法,但沒有一個好的模型,你就瞎忙吧。你覺得上面的代碼哪兒錯了?

4、一不小心就OO及ORM  來自:評論系統(tǒng)設(shè)計 ★★☆

@Entity
@javax.persistence.Inheritance(strategy?
= ?javax.persistence.InheritanceType.JOINED)
@Cache(usage
= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@FormPO(inject?
= ? " sequence,content,owner " )
public ? abstract ? class ?Review? implements ?java.io.Serializable? {

?@Id
?@GeneratedValue(strategy?
= ?GenerationType.TABLE)
?
private ?Long?id; // ?主鍵
..}



@FormPO(inject
= " blogOwner,inputUser " )
@Entity
@javax.persistence.MappedSuperclass
public ? class ?BlogReview? extends ?Review? implements ?IBlogComponment? {
?@POLoad(name
= " userId " )
?@ManyToOne
?
private ?User?blogOwner;

?
private ?String?inputUser;
}



@FormPO(inject
= " newsDoc " )
@Entity
public ? class ?BlogNewsReview? extends ?BlogReview? {
?@POLoad(name?
= ? " docId " )
?@ManyToOne
?@JoinColumn
?
private ?BlogNewsDoc?newsDoc; // ?評論的對象

}


public ? interface ?IBlogReviewDAO?? extends ?GenericDAO < BlogReview > ? {

}


?
private ?IBlogReviewDAO?dao;
????
public ?BlogReview?getBlogReview(Long?id)? {
??
return ? this .dao.get(id);
?}


  評論系統(tǒng),管理員能管理所有評論,能對Blog文章、像冊等進(jìn)行評論。
這個示例要是搞好了可以當(dāng)成是一個比較經(jīng)典的OO及ORM示例,但是現(xiàn)在這樣的寫法你知道JPA會創(chuàng)建幾張表嗎,各個表之間關(guān)聯(lián)字段是是什么? Service中的getBlogReview返回什么?答對了有獎。


4、有事無事的事務(wù)  來自blog信息發(fā)表?
??

<!-- 事務(wù)配置 -->
?
< aop:config >
??
< aop:pointcut?id = " saveMethods "
???expression
= " execution(*?com.easyjf.blog.service.BlogNewsDocService.*(..)) " ? />
???
< aop:advisor?advice - ref = " txBlogServiceAdvice "
???pointcut
- ref = " saveMethods " ? /> ?
?
</ aop:config >
?
< tx:advice?id = " txBlogServiceAdvice "
??transaction
- manager = " transactionManager " >
??
< tx:attributes >
???
< tx:method?name = " wirteBlog* " ?propagation = " REQUIRES_NEW " ? />
???
< tx:method?name = " update* " ?propagation = " REQUIRES_NEW " ? />
???
< tx:method?name = " get* " ?propagation = " SUPPORTS "
????read
- only = " true " ? />
???
< tx:method?name = " query* " ?propagation = " SUPPORTS "
????read
- only = " true " ? />
???
< tx:method?name = " * " ?propagation = " REQUIRED " ? />
??
</ tx:attributes >
?
</ tx:advice >

代碼:
this .service.addBlogReview(review);
?
if ?(review? instanceof ?BlogNewsReview)? {
???BlogNewsReview?r?
= ?(BlogNewsReview)?review;
???
// this.docService.updateBlogNewsDoc(r.getNewsDoc());
??? this .htmlGenerator.process(r.getNewsDoc());
???r.getNewsDoc().getReviews().remove(r);
// ?很怪也滑稽的設(shè)計
??? return ? new ?Page( " html " ,?r.getNewsDoc().getStaticUrl(),? " html " );
?}


?  為什么Blog更新后出來的html頁面還是上一次更新的內(nèi)容?為什么在添加新聞的評論里面要加一句r.getNewsDoc().getReviews().remove(r),是無奈還是真的滑稽。

5、究竟是要IP、IQ還是IC卡  來自:blog首頁 ☆

 后臺Action代碼
public ?Page?doInit(WebForm?form,?Module?module)? {
??form.addResult(
" blogInfoService " ,? this .blogInfoService);
??form.addResult(
" bqu " ,?bqu);
??form.addResult(
" bdqu " ,?bdqu);
??form.addResult(
" bcqu " ,?bcqu);
form.addResult(
" bb”?bb);
?? if ?(UserContext.getUser()? != ? null )? {
???form.addResult(
" user " ,? " true " );
??}

??
return ? new ?Page( " index " ,? " /blog/index.html " );
?}

前臺頁面
#foreach($info?in?$bcu.thisYear.doc.list)
$info.title
#end

  這段代碼是想把一些實用工具比如bb,bq,bcqu,bdqu等暴露給頁面,由頁面人員根據(jù)自己的喜愛想要展示什么數(shù)據(jù)就展示什么數(shù)據(jù)。嚴(yán)格來說,這沒什么錯,只是害苦了美工MM而已,難怪她們不喜歡呆辦公室。

7、真空還是沒空(is NULL or EMPTY)  來自Blog發(fā)布程序

業(yè)務(wù)層代碼:
QueryObject?query?
= ? new ?QueryObject();
java.util.Calendar?ca?
= ?java.util.Calendar.getInstance();
ca.setTimeInMillis(ca.getTimeInMillis()?
- ?blogIntervals? * ? 1000 );??
query.addQuery(
" (obj.updateTime<??or?obj.updateTime?is?EMPTY) " , new ?Object[] {ca.getTime()} );
query.setPageSize(
- 1 );??
List?list?
= ? this .blogService.getBlogInfo(query).getResult();

知道執(zhí)行這段代碼生成的SQL嗎?一定會讓你大吃一驚,把EMPTY改成NULL難道是我們想要的?

 8、F想要干什么 來自:blog新聞管理 
?

Javascript腳本代碼:
function ?init() {
???F
= new ?FORM( " blogNewsDoc.ejf " , " ListForm " );
???windowInit();
??}

??window.onload
= init;??
??F.doList?
= ?F.doOneCommand( " listDoc " );


  古老的new FORM曾經(jīng)讓我們非常欣喜,但為什么現(xiàn)在換來的卻是大家抱怨呢?代碼有時候也是有生命的,你如何都不用心好好對待他,他怎么會一直按部就班的運(yùn)轉(zhuǎn)呢?

 9.想擦掉js給你留下的傷疤嗎 來自blog管理后臺

  Html代碼
< form?name = ”ListForm”?id = ”ListForm” />
< input?type = " button " ?name = " submit " ?value = " 徹底刪除 " ?onClick = " F.doRemove(); " ?class = " pushbutton " ?style = " cursor:pointer? " >
</ form >
?????F.doRemove()里面會執(zhí)行類似$(“ListForm”).submit()這樣的代碼來提交表單。


你覺得這段代碼能讓你真正的徹底刪除掉js曾經(jīng)留給你的諸多痛苦回憶嗎?你繼續(xù)痛哭吧,呵呵。其實我們只要仔細(xì)看一看就知道問題了。w3c可不是war3,不能隨便亂來的。

10.你擁有什么?  來自Blog域?qū)ο?
?

@FormPO(disInject = " id,owner,inputTime,readTimes,status,elite,updated,docNum,photoNum " )
@MappedSuperclass
public ? class ?AbstractBlog? implements ?Serializable? {?
?@Id
?@GeneratedValue(strategy?
= ?GenerationType.TABLE)
?
protected ?Long?id;
?
?@OneToOne
?
protected ?User?onwer;
?
?@Column(length?
= ? 200 )
?
protected ?String?title; // ?標(biāo)題

?@Column(length?
= ? 200 )
?
protected ?String?subtitle; // ?副標(biāo)題

}

頁面標(biāo)簽:
#foreach($info?$BlogQuery.photoQuery.blogOwner($blog.owner).number(
6 ).orderBy( " inputTime " ).desc().list)

#end

  呵呵,今天就這么多了,先聽聽大家的高見!下次發(fā)幾個能讓人眼前一亮的。

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1921072


美麗的錯誤


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人福利夜色影视 | 热玖玖 | 香香影院在线观看 | 综合九九| 精品久久久久久久中文字幕 | 伊人激情久久综合中文字幕 | 香蕉久草在线 | 亚洲综合无码一区二区 | 国产成人亚综合91精品首页 | 亚洲成综合 | 欧美一级xxxxⅹ毛片 | 亚洲欧美精品一区二区 | 七月婷婷在线视频综合 | 在线亚洲欧洲福利视频 | 久久久精品久久久久特色影视 | 欧美性色欧美a在线观看 | 亚洲精品字幕一区二区三区 | 国产日韩欧美一区 | 一级a爱片久久毛片 | 国产美女久久精品香蕉69 | 97影院九七理论片男女高清 | 天天射天天射天天干 | 国产一级特黄一级毛片 | 欧美日韩永久久一区二区三区 | 中文成人在线 | 免费在线欧美 | 五月婷婷综合在线 | 国产伦精品一区二区三区视频小说 | 亚洲精品视频观看 | 人人爱天天做夜夜爽2020麻豆 | 成人综合网站 | 久久综合久久精品 | 成人综合久久精品色婷婷 | 欧美一区三区 | 国产成人亚洲日本精品 | 久草免费在线视频 | 亚洲国产精品毛片∧v卡在线 | 成年女人毛片免费播放视频m | 国产一区二区在线免费观看 | 欧美亚洲网站 | 免费在线欧美 |