我的数据库允许Anonymous访问数据库并提交表单以进行处理 它在[申请人],[管理员],[审稿人]
中有3个角色问题:
我需要通过组合3个不同的“邮件”字段来更新“电子邮件”字段以进行组合。所以我使用添加元素,但它似乎保存错误的数据,它给了额外的[申请人]。附加图像将显示其显示方式
var v;
// Update mail 1 and mail 2 and mail3 into Email field!
if
(
(document1.getValue("Mail1")!=null && document1.getValue("Mail1")!="")&&
(document1.getValue("Mail2")!=null && document1.getValue("Mail2")!="")&&
(document1.getValue("Mail3")!=null && document1.getValue("Mail3")!="")
) //all not empty
{
v.addElement(document1.getValue("Mail1")+"@brookedockyard.com.my");
v.addElement(document1.getValue("Mail2")+"@brookedockyard.com.my");
v.addElement(document1.getValue("Mail3")+"@brookedockyard.com.my");
document1.replaceItemValue("Email",v)
else if
(
(document1.getValue("Mail1")!=null && document1.getValue("Mail1")!="")&&
(document1.getValue("Mail2")==null && document1.getValue("Mail2")=="")&&
(document1.getValue("Mail3")===null && document1.getValue("Mail3")=="")
) // only have mail 1
{
document1.replaceItemValue("Email", document1.getValue("Mail1")+"@brookedockyard.com.my")
}
else if
(
(document1.getValue("Mail1")!=null && document1.getValue("Mail1")!="")&&
(document1.getValue("Mail2")!=null && document1.getValue("Mail2")!="")&&
(document1.getValue("Mail3")==null && document1.getValue("Mail3")=="")
) // only have mail 1 and mail 2
{
v.addElement(document1.getValue("Mail1")+"@brookedockyard.com.my");
v.addElement(document1.getValue("Mail2")+"@brookedockyard.com.my");
document1.replaceItemValue("Email",v)
else if
(
(document1.getValue("Mail1")!=null && document1.getValue("Mail1")!="")&&
(document1.getValue("Mail2")==null && document1.getValue("Mail2")=="")&&
(document1.getValue("Mail3")!=null && document1.getValue("Mail3")!="")
) // only have mail 1 and mail 3
{
v.addElement(document1.getValue("Mail1")+"@brookedockyard.com.my");
v.addElement(document1.getValue("Mail3")+"@brookedockyard.com.my");
document1.replaceItemValue("Email",v)
}
我正在使用serverside javascript来保存文档。但在保存期间,它会在系统中添加额外信息。
答案 0 :(得分:4)
我认为您的代码需要一些优化。此代码与您的代码相同:
var v = [];
["Mail1", "Mail2", "Mail3"].forEach(function(name) {
if (document1.getValue(name)) {
v.push(document1.getValue(name)+"@brookedockyard.com.my");
}
});
document1.replaceItemValue("Email",v);
此外,它将变量v
初始化为空数组。尽可能使用数组而不是向量。这是更多的JavaScript原生。
答案 1 :(得分:3)
您的Vector(v
)在哪里创建?您只是向现有Vector添加元素,因此您的代码(如果使用computeWithForm,XPage设置,SSJS代码,则表单设置)必须使用" [申请人]"初始化该Vector。值或检索已包含" [申请人]"值。
IBM代码添加的可能性" [申请人]" setValue()
方法期间的项目为零。该错误几乎肯定在您的应用程序代码中,而不是setValue()
引入的。 Eclipse搜索应该有助于确定应用程序代码设置该值的位置。
答案 2 :(得分:1)
创建请求范围的bean。
<强>面-config.xml中强>
<managed-bean>
<managed-bean-name>forgetSsjs</managed-bean-name>
<managed-bean-class>demo.bean.ForgetSsjsBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
豆
package demo.bean;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import lotus.domino.NotesException;
import com.ibm.commons.util.StringUtil;
import com.ibm.xsp.model.domino.wrapped.DominoDocument;
import com.ibm.xsp.util.FacesUtil;
public class ForgetSsjsBean implements Serializable {
private static final long serialVersionUID = 1L;
public void saveTheDoc() {
FacesContext facesContext = FacesContext.getCurrentInstance();
DominoDocument wrapper = (DominoDocument) FacesUtil.resolveVariable(facesContext,
"document1");
Set<String> emails = new HashSet<String>();
try {
for (int i = 1; i < 4; i++) {
addEmail(wrapper.getItemValueString("Mail" + i), emails);
}
if (!emails.isEmpty()) {
wrapper.replaceItemValue("Email", new Vector<String>(emails));
wrapper.save();
}
} catch (NotesException e) {
throw new FacesException(e);
}
}
private void addEmail(String name, Set<String> emails) {
if (StringUtil.isEmpty(name)) {
return;
}
emails.add(name + "@brookedockyard.com.my");
}
}
将您的事件处理程序操作链接到您指定用于保存文档的方法:
xsp页面
<xp:this.data>
<xp:dominoDocument var="document1" ... />
</xp:this.data>
...
<xp:button id="button1" value="save this thing">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" action="#{forgetSsjs.saveTheDoc}" />
</xp:button>