创建一个简单的“联系我们”XPage。
通过“显示错误”控件显示错误的服务器端验证。 点击时有按钮发送电子邮件。
功能使用Firefox 4.0.1,但不适用于IE8。
在beforeRenderResponse事件中添加了以下兼容性代码:
try {
if (context.getUserAgent().isIE(8, 8)) {
var exCon = facesContext.getExternalContext();
var response = exCon.getResponse();
response.setHeader("X-UA-Compatible", "IE=EmulateIE7");
}
} catch (e) {
}
似乎没有帮助。有什么想法/建议吗?
德里克
更新
根据要求 - 这是按钮代码:
var doc = database.createDocument();
doc.replaceItemValue("Form", "Memo");
doc.replaceItemValue("Subject", "Contact Us Received");
doc.replaceItemValue("SendTo", "detnyre@mac.com");
doc.replaceItemValue("DisplaySent","detnyre@mac.com");
//Build Body
var1 = "The following Contact Us message was received: <br><br>";
var2 = var1 + "Contact Name: " + document1.getItemValueString("ContactName").valueOf()+ "<br><br>";
var3 = var2 + "Email Address: " + document1.getItemValueString("ContactEmail").valueOf()+ "<br><br>";
var4 = var3 + "Phone Number: " + document1.getItemValueString("ContactPhone").valueOf() + "<br><br>";
var5 = var4 + "Subject: " + document1.getItemValueString("ContactSubject").valueOf() + "<br><br>";
var6 = var5 + "Message: " + document1.getItemValueString("ContactMessage").valueOf() + "<br>";
body = doc.createMIMEEntity()
stream = session.createStream()
stream.writeText(var6)
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0)
// Send
doc.send();
context.redirectToPage("Home")
这是生成的XML:
<xp:button value="Email Test" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var doc = database.createDocument();
doc.replaceItemValue("Form", "Memo");
doc.replaceItemValue("Subject", "Contact Us Received");
doc.replaceItemValue("SendTo", "detnyre@mac.com");
doc.replaceItemValue("Princial","detnyre@mac.com");
doc.replaceItemValue("ReplyTo","detnyre@mac.com");
doc.replaceItemValue("tmpDisplaySentBy","detnyre@mac.com");
doc.replaceItemValue("DisplaySent","detnyre@mac.com");
doc.replaceItemValue("From","DonahueOnline")
//Build Body
var1 = "The following Contact Us message was received: <br><br>";
var2 = var1 + "Contact Name: " + document1.getItemValueString("ContactName").valueOf()+ "<br><br>";
var3 = var2 + "Email Address: " + document1.getItemValueString("ContactEmail").valueOf()+ "<br><br>";
var4 = var3 + "Phone Number: " + document1.getItemValueString("ContactPhone").valueOf() + "<br><br>";
var5 = var4 + "Subject: " + document1.getItemValueString("ContactSubject").valueOf() + "<br><br>";
var6 = var5 + "Message: " + document1.getItemValueString("ContactMessage").valueOf() + "<br>";
body = doc.createMIMEEntity()
stream = session.createStream()
stream.writeText(var6)
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0)
// Send
doc.send();
context.redirectToPage("Home")
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
德里克
============
将代码从按钮移动到查询保存事件。相同的结果 - 适用于Firefox,但不适用于IE8。假设我有一些基本错误,只是找不到它......这是新的源代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforeRenderResponse><![CDATA[#{javascript:try {
if (context.getUserAgent().isIE(8, 8)) {
var exCon = facesContext.getExternalContext();
var response = exCon.getResponse();
response.setHeader("X-UA-Compatible", "IE=EmulateIE7");
}
} catch (e) {
}}]]></xp:this.beforeRenderResponse>
<xp:br></xp:br>
<xp:this.data>
<xp:dominoDocument var="document1" formName="CUF">
<xp:this.querySaveDocument><![CDATA[#{javascript:var doc = database.createDocument();
doc.replaceItemValue("Form", "Memo");
doc.replaceItemValue("Subject", "Contact Us Received");
doc.replaceItemValue("SendTo", "detnyre@mac.com");
doc.replaceItemValue("Princial","detnyre@mac.com");
doc.replaceItemValue("ReplyTo","detnyre@mac.com");
doc.replaceItemValue("tmpDisplaySentBy","detnyre@mac.com");
doc.replaceItemValue("DisplaySent","detnyre@mac.com");
doc.replaceItemValue("From","DonahueOnline")
//Build Body
var1 = "The following Contact Us message was received: <br><br>";
var2 = var1 + "Contact Name: " + document1.getItemValueString("ContactName").valueOf()+ "<br><br>";
var3 = var2 + "Email Address: " + document1.getItemValueString("ContactEmail").valueOf()+ "<br><br>";
var4 = var3 + "Phone Number: " + document1.getItemValueString("ContactPhone").valueOf() + "<br><br>";
var5 = var4 + "Subject: " + document1.getItemValueString("ContactSubject").valueOf() + "<br><br>";
var6 = var5 + "Message: " + document1.getItemValueString("ContactMessage").valueOf() + "<br>";
body = doc.createMIMEEntity()
stream = session.createStream()
stream.writeText(var6)
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0)
// Send
doc.send();
context.redirectToPage("Home")
}]]></xp:this.querySaveDocument></xp:dominoDocument>
</xp:this.data>
<xp:table
style="margin-top:5.0px;margin-bottom:5.0px;padding-top:5.0px;padding-bottom:5.0px">
<xp:tr>
<xp:td>
<xp:span style="font-size:16pt">Contact Us</xp:span>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td></xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
* (denotes required field)
</xp:td>
</xp:tr>
<xp:tr>
<xp:td></xp:td>
</xp:tr>
<xp:tr>
<xp:td style="width:400px;font-size:12pt">
Name:*
<xp:message id="ContactNameError" for="ContactName"
style="color:rgb(255,128,128);font-size:9pt">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactName"
value="#{document1.ContactName}" style="width:200px"
required="true">
<xp:this.validators>
<xp:validateRequired
message="Name is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:br></xp:br>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Email Address:*  
<xp:message id="message1"
style="color:rgb(255,0,0);font-size:9pt" for="ContactEmail">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactEmail" style="width:200px"
value="#{document1.ContactEmail}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Email Address is Required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">Phone Number:</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactPhone" style="width:200px"
value="#{document1.ContactPhone}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Phone Number is Required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:br></xp:br>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Subject:*  
<xp:message id="message2"
style="color:rgb(255,0,0);font-size:9pt" for="ContactSubject">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactSubject" style="width:300px"
value="#{document1.ContactSubject}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Subject is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Message:*  
<xp:message id="message3"
style="color:rgb(255,0,0);font-size:9pt" for="ContactMessage">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputTextarea id="ContactMessage"
style="height:250px;width:99%" value="#{document1.ContactMessage}"
required="true">
<xp:this.validators>
<xp:validateRequired
message="A message is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputTextarea>
</xp:td>
</xp:tr>
</xp:table>
<xp:br></xp:br>
<xp:button value="Submit" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action></xp:eventHandler></xp:button></xp:view>
==========
尝试发布的建议。删除了设置IE8兼容模式的代码。重新按下按钮。按钮代码中包含save =“false”。仍然适用于FireFox,但不适用于IE8。 IE8显示页面,但验证和电子邮件代码不运行...奇怪......
这是最新的源代码:
<xp:br></xp:br>
<xp:this.data>
<xp:dominoDocument var="document1" formName="CUF">
<xp:this.querySaveDocument><![CDATA[#{javascript:var doc = database.createDocument();
doc.replaceItemValue(“Form”,“Memo”); doc.replaceItemValue(“主题”,“联系我们收到”); doc.replaceItemValue(“SendTo”,“detnyre@mac.com”); doc.replaceItemValue( “Princial”, “detnyre@mac.com”); doc.replaceItemValue( “的ReplyTo”, “detnyre@mac.com”); doc.replaceItemValue( “tmpDisplaySentBy”, “detnyre@mac.com”); doc.replaceItemValue( “DisplaySent”, “detnyre@mac.com”); doc.replaceItemValue( “从”, “DonahueOnline”)
//构建身体
var1 =“收到以下联系我们的信息:
”;
var2 = var1 +“联系人姓名:”+ document1.getItemValueString(“ContactName”)。valueOf()+“
”;
var3 = var2 +“电子邮件地址:”+ document1.getItemValueString(“ContactEmail”)。valueOf()+“
”;
var4 = var3 +“电话号码:”+ document1.getItemValueString(“ContactPhone”)。valueOf()+“
”;
var5 = var4 +“Subject:”+ document1.getItemValueString(“ContactSubject”)。valueOf()+“
”;
var6 = var5 +“Message:”+ document1.getItemValueString(“ContactMessage”)。valueOf()+“
”;
body = doc.createMIMEEntity() stream = session.createStream() stream.writeText(var6) body.setContentFromText(stream,“text / html; charset = iso-8859-1”,0)
//发送 doc.send(); context.redirectToPage( “主页”)
}]]&GT; 联系我们 * (表示必填项) 名称:*
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactName"
value="#{document1.ContactName}" style="width:200px"
required="true">
<xp:this.validators>
<xp:validateRequired
message="Name is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:br></xp:br>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Email Address:*  
<xp:message id="message1"
style="color:rgb(255,0,0);font-size:9pt" for="ContactEmail">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactEmail" style="width:200px"
value="#{document1.ContactEmail}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Email Address is Required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">Phone Number:</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactPhone" style="width:200px"
value="#{document1.ContactPhone}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Phone Number is Required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:br></xp:br>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Subject:*  
<xp:message id="message2"
style="color:rgb(255,0,0);font-size:9pt" for="ContactSubject">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="ContactSubject" style="width:300px"
value="#{document1.ContactSubject}" required="true">
<xp:this.validators>
<xp:validateRequired
message="Subject is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="font-size:12pt">
Message:*  
<xp:message id="message3"
style="color:rgb(255,0,0);font-size:9pt" for="ContactMessage">
</xp:message>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputTextarea id="ContactMessage"
style="height:250px;width:99%" value="#{document1.ContactMessage}"
required="true">
<xp:this.validators>
<xp:validateRequired
message="A message is required.">
</xp:validateRequired>
</xp:this.validators>
</xp:inputTextarea>
</xp:td>
</xp:tr>
</xp:table>
<xp:br></xp:br>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true" save="false" refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
答案 0 :(得分:1)
如果没有实际代码,很难诊断问题。这可能与未设置正确的按钮类型有关,该按钮类型适用于Firefox,但会破坏IE。看到我写的这篇博文:
http://blog.thimojansenit.nl/2011/06/fix-default-type-for-submit-buttons-in.html
(编辑)在这种情况下,看到代码后,尝试将'save =“false”'添加到eventHandler中。像这样:
<xp:button value="Submit" id="button1">
<xp:eventHandler event="onclick" submit="true" save="false" refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
对我而言,当IE在提交事件中的行为与Firefox不同时,这就是诀窍。
答案 1 :(得分:1)
您的代码不应该在按钮中。将按钮设置为“提交”并将代码移动到数据源的查询事件中。
答案 2 :(得分:0)
你为什么效仿ie7?如果您有8.5.3服务器使用ie8标准或9如果可能。 ie7不好。