平台:Domino v9
当用户使用Xpage打开文档时,Rich Text控件(CKEditor)会显示该文档中的现有内容。
RichText字段绑定到后端Notes文档。
当用户对此内容进行任何更改并单击“更新”按钮时,将进行验证(对于此示例,我们将检查长度是否超过20个字符)。
使用ValidateExpression选项完成验证。
在验证时,用户会看到错误消息,但用户输入的新内容将丢失。 Rich Text控件显示原始内容。
<xp:this.validators>
<xp:validateExpression>
<xp:this.expression><![CDATA[#{javascript:var contentStr = value.getContentAsText();
var regex = /(<([^>]+)>)/ig ;
contentStr = contentStr.replace(regex,'');
if( contentStr.length < 20 ) {
return true;
}else{
return false;
}
}]]></xp:this.expression>
<xp:this.message><![CDATA[#{javascript:var errMsg = getErrorMessageText ('713','');
if ( errMsg != null && errMsg != "") {
//return errMsg;
return "Length cannot exceed 20 characters";
}else{
return "Length cannot exceed 20 characters";
}}]]></xp:this.message>
</xp:validateExpression>
</xp:this.validators>
我尝试过Tommy Valand博客中提到的解决方案,但这并没有解决问题。 Tommy's Blog
如何在不丢失新内容的情况下验证RichText控件?
答案 0 :(得分:3)
当我有复杂的验证时,我有时会使用隐藏的输入字段进行验证。不确定这是否有助于这种情况,但值得一试......
getLocalValue应该在验证阶段返回转换后的值。由于您正在处理字符串,因此getSubmittedValue可能更合适/更容易使用。
如果您使用xp:message,请将for属性设置为您为隐藏字段决定的ID。
private string SendHttpRequest(string url, out int statusCode, string method = "GET", object postData = null, string contentType = "application/json")
{
bool isPost = method.Equals("POST", StringComparison.CurrentCultureIgnoreCase);
byte[] content = new ASCIIEncoding().GetBytes(isPost ? JsonConvert.SerializeObject(postData) : "");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = true;
request.Method = method;
request.ContentType = contentType;
request.ContentLength = postData == null ? 0 : content.Length;
if (isPost && postData != null)
{
Stream reqStream = request.GetRequestStream();
reqStream.Write(content, 0, content.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Throws error here
string result;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
statusCode = (int)response.StatusCode;
response.Close();
return result;
}
答案 1 :(得分:2)
奇怪的行为。也许您可以通过CSJS(而不是SSJS / Java)使用最近添加的代码段来验证您的RTF控件:http://openntf.org/XSnippets.nsf/snippet.xsp?id=validate-rich-text-field