真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

郵件審批:表單作為郵件內(nèi)容展示問題處理過程1——下拉菜單select問題

   在仿照費(fèi)控和用友做郵件審批時(shí),增加了對表單內(nèi)容的顯示。在系統(tǒng)中做審批時(shí),表單內(nèi)容有豐富的控件展示,簡單的有input,textarea,radio,復(fù)雜的有自定義的審批控件、附件控件和人員選擇器等。目前復(fù)雜控件展示沒有問題,復(fù)雜控件為只讀狀態(tài)時(shí),展示給用戶的就是普通的input或table;簡單控件中當(dāng)為select時(shí)出現(xiàn)無法綁定值的問題。即不管其選中項(xiàng)是什么,展示出來的始終是第一項(xiàng)。

成都創(chuàng)新互聯(lián)主營鳳岡網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),鳳岡h5小程序定制開發(fā)搭建,鳳岡網(wǎng)站營銷推廣歡迎鳳岡等地區(qū)企業(yè)咨詢

   根據(jù)問題癥狀,之前在審批展示時(shí),也出現(xiàn)過因下拉菜單展示有問題(如始終展示第一項(xiàng)或最后一項(xiàng))導(dǎo)致的問題。究其根源是由于對select的val的不支持,解決方案是增加以下js代碼

$("select").each(function(index, element) {
		$(this).attr("style", "color:rgb(0, 0, 0)");
		var _val = $(element).attr("val");
		if (_val) {
			$("option[value='" + _val + "']", $(element)).attr(
					"selected", "selected");
		}
	});

    以上的思路即為先即得select的val值,然后將對應(yīng)val值的option選項(xiàng)置為selected。

  以下是整個(gè)解決過程:

   1.首先對以上思路進(jìn)行測試,加入代碼:

   

from = from +"$(function(){$(\"select\").each(function(index, element) {var _val = $(element).attr(\"val\");if (_val) {$(\"option[value='\" + _val + \"']\", $(element)).attr(\"selected\", \"selected\")}});});";

   由于缺失jquery,所以肯定是失敗的。

   2.由于freemarker只提供了解析接口,希望通過重寫某些方法實(shí)現(xiàn)思路1中的方案,但freemarker的解析沒有找到源碼,可能代價(jià)較大,放棄;   

   3.在網(wǎng)頁中選中elements,發(fā)現(xiàn)val值被過濾,validate(jQuery的validate)也被濾除;

   跟蹤相應(yīng)代碼發(fā)現(xiàn)freemarker生成的html并無問題;一直向后跟蹤至javaMail發(fā)送郵件的content的set處,content值也沒有問題。在進(jìn)行跟蹤時(shí),發(fā)現(xiàn)content的type是Multipart/mixed,mixed格式一般是指包含豐富展現(xiàn)的情況,于濾除val值和validate無關(guān)。

   4.由于validate是jquery所支持的,考慮到可能與jQuery未被引入有關(guān)。OA系統(tǒng)中存在jQuery,是存儲(chǔ)在

   如果是因?yàn)関alidate無法識別,導(dǎo)致val丟失,理論上加入jquery引入是可以解決的。但測試下來不光沒有解決,在F12搜索引入的script發(fā)現(xiàn),script也被過濾掉,根本無法引入并解析執(zhí)行。

  5.由于引入jQuery不成功,所以希望將所有的valieate直接過濾掉,使用如下正則表達(dá)式:

from = from.replaceAll("validate=\"(.*)}\"","");

   validate雖然被過濾掉,但val還是不存在。在html的select標(biāo)簽的介紹中,可以看出,val和同時(shí)被過濾的validate都不是基本的屬性。所以解決的思路應(yīng)該轉(zhuǎn)向郵箱正文展示應(yīng)以最基本屬性為主。

  6.仍然按照思路1,將select使用val指定選中項(xiàng),改為按照option selected,使用正則表達(dá)式替換,代碼如下:

	if(readHtml.contains("select")){
				  String regex = "value=\"" + value + "\"";
				   String str = readHtml;
				   Pattern pat = Pattern.compile(regex);  
				   Matcher matcher = pat.matcher(str);     
				   while (matcher.find()) { 
				     String temp = str.substring(matcher.start(),matcher.end());
				     str = str.replaceAll(temp, temp.substring(0,temp.lastIndexOf(value))+ "" + value + "\"" + " selected='true'");
				    
				   }   
				   readHtml = str;
			}

   經(jīng)確認(rèn),問題解決。選中的option后會(huì)追加selected=true,顯示正常。該方式也解決了之前需要在各頁面或統(tǒng)一js中必須增加val轉(zhuǎn)換為selected=true的問題。


分享題目:郵件審批:表單作為郵件內(nèi)容展示問題處理過程1——下拉菜單select問題
當(dāng)前網(wǎng)址:
http://weahome.cn/article/gjhocs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部