我正在尝试保存字符串,左端没有空格,右端没有空格。
来自这两个网站website1和website2。我开始使用ltrim和rtrim去除空间。
在xpage中,有一个编辑框,它使用数据绑定绑定到名为Topic的表单,字段名称为topic。还有一个按钮和一个计算字段。
以下是xpage的完整代码。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Topic"
computeWithForm="onsave">
</xp:dominoDocument>
</xp:this.data>
<xp:inputText id="inputText1" value="#{document1.topic}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var input = getComponent("inputText1").getValue();
var trimleft = input.ltrim();
var trimright = trimleft.rtrim();
getComponent("computedField1").setValue(trimright);
document1.save();
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1"></xp:text>
</xp:view>
当我运行它时,我可以看到输入的左端没有sapce,并且计算字段中输入的右端没有空格。例如,如果我输入&#34;这是测试&#34;,计算字段可以显示这样的结果&#34;这是测试&#34;。
但是在Lotus Notes Client中,我打开视图,我注意到保存的输入有空格(与原始输入相同)。
然后我尝试将customConverter放入编辑框中。代码就像这样
<xp:inputText id="inputText1" value="#{document1.topic}">
<xp:this.converter>
<xp:customConverter getAsString="#{javascript:value}">
<xp:this.getAsObject><![CDATA[#{javascript:var trimvalueleft = value.ltrim();
var trimvalueright = trimvalueleft.rtrim();
var value = trimvalueright;
value}]]></xp:this.getAsObject>
</xp:customConverter>
</xp:this.converter>
</xp:inputText>
我使用相同的输入再次运行它#34;这是测试&#34;,我看到保存的输入仍然有空格。
之后,我打开表单,在字段中,我将@Trim(主题)放在输入翻译中并再次运行,结果是一样的。
我不知道为什么即使我使用rtrim和ltrim,保存的值仍然有空间。如果有人让我知道我的错误,感激不尽。谢谢。
答案 0 :(得分:1)
我会倾向于转换器而忘记了复杂的保存操作。您也可以再次重新引用页面上的值而无需手动设置。请尝试以下方法:
tasks:
- include_role:
name: "mysql"
when: "'mysql' in roles"
- include_role:
name: "apache"
when: "'apache' in roles"
答案 1 :(得分:0)
我怀疑原因是您正在更新组件值(getComponent.setVaue()
),但保存数据源。只有当save()
从所有组件中再次提取所有值时,这才有效。如果情况确实如此,我会感到惊讶,并且可能会有很大的表现。
改为更新数据源(例如document1.replaceItemValue("myField",myValue)
)。只有当您无法访问它所绑定的数据源时才会访问该组件(例如,在转换器/验证器中,因为数据源尚未更新)。
或者,因为您已经在使用computeWithForm onsave,所以在表单中使用@Trim()。