[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 
Global site tag (gtag.js) - Google Analytics