[SEAM] messages在xhtml中换行的问题
无双Rama
2009-05-12
后台代码:
public void importExcelData(ByteArrayInputStream excelData) throws ParseException { //成功注入筆數 和 注入失敗筆數 int succedNum=0 ; int failedNum=0; StringBuffer strBuffer = new StringBuffer(); ... for(int i=0;i<sheet.getRows()-1;i++){ strBuffer.append("第" + i + "行,第1列:沒有與該員工工號對應的員工信息! \n "); ... strBuffer.append("第" + i + "行,第2列:日期格式有誤! \n "); ... strBuffer.append("第" + i + "行,第3列:預扣方式有誤! \n "); ... strBuffer.append("第" + i + "行數據已存在 \n"); } failedNum=sheet.getRows()- succedNum - 2; FacesMessages.instance().add("匯入成功:" + succedNum + "筆"); FacesMessages.instance().add("不能匯入:" + failedNum + "筆"); if (failedNum > 0) { FacesMessages.instance().add("不能原因:" + strBuffer.toString()); } } } 页面: <a4j:outputPanel ajaxRendered="true"> <h:messages id="hmessage" style="display:none" showSummary="true" showDetail="false" /> <script language="javascript" type="text/javascript"> //<![CDATA[ try{ var msg= document.getElementById("hmessage").innerHTML.replace(/<.+?>/gim,''); if(msg){ if(msg.length > 0){ alert(msg ); } } }catch(e){} //]]> </script> </a4j:outputPanel> 要求显示的效果: 匯入成功 n 筆 不能匯入 m 筆 不能原因:第 i 行,第 j 列 ,数据重复;(1) 第 k 行,第 l 列 ,数据重复;(2) .... 问题是: 显示错误的原因的时候 没有换行,即上面的(1)、(2)没有换行。请各位大牛帮忙解决!!! |
|
5day
2009-05-12
我的环境是seam2.1.2.cr1 richfaces 3.3.1cr3,用\n就解决了问题。
或许你环境和我不同。 |
|
5day
2009-05-12
另外我的FacesMessages是注入的。
@In FacesMessages facesMessages; facesMessages.add("abc\nbcd"); |
|
无双Rama
2009-05-12
5day 写道 另外我的FacesMessages是注入的。
@In FacesMessages facesMessages; facesMessages.add("abc\nbcd"); 怎么我这个就不行呢?我把 @In FacesMessages facesMessages; facesMessages.add("abc\nbcd");也写进代码里试了一下, 它显示的是“abc bcd”,到底是哪里出问题了呢 |
|
5day
2009-05-12
我测试的firefox。IE没测
|
|
无双Rama
2009-05-12
5day 写道 我测试的firefox。IE没测
那你帮我测一下我的环境撒。。 jboss-4.22GA + jboss-seam-2.11.GA jboss自带的浏览器和 IE8.0 看看能否实现?? 其实我用别的方法是可以的, @Out Stirng str; public String getStr(){return str;} public void setStr(String str){this.str=str;} ... setStr("abc \\n"); ... setStr("def \\n"); 页面中: <script language="javascript" type="text/javascript"> //<![CDATA[ try{ var msg= "#{str}"; if(msg){ if(msg.length > 0){ alert(msg ); } } }catch(e){} //]]> </script> 这样是可以换行的,但是这样性能不好,而且还要在下一次动作之前去清空str的值,所以我就没这样做。。。 |
|
5day
2009-05-12
经测试:的确是IE不行。FIREFOX可以。
|
|
5day
2009-05-12
可以通过js来解决这个问题。
java: facesMessages.add("abc-BR-bcd"); js: .replace(/<.+?>/gim,'').replace(/-BR-/g,"\n"); 经测试,IE和FIREFOX都可以。 |
|
无双Rama
2009-05-13
5day 写道 可以通过js来解决这个问题。
java: facesMessages.add("abc-BR-bcd"); js: .replace(/<.+?>/gim,'').replace(/-BR-/g,"\n"); 经测试,IE和FIREFOX都可以。 刚才试了一下,终于可以了,非常感谢 5day |