我正在努力实现 FriendlyCryptoNeighbor here的非常好的答案,而且我对所有jsf的东西都很陌生。
为了加密密码(如RSA_With_Public_Key(SHA256(password))
)客户端,我想覆盖<h:input
以在javascript中调用加密函数。但我无法找到办法做到这一点。
问题是我有一个绑定到输入值的bean ...在一个RESTful服务器中,它很容易加密并从javascript发出请求,但在那里,我不确定所有这些是如何工作的。< / p>
- 更新1
目前,我点击commandButton执行一个javascript脚本,它会更新我的bean绑定的隐藏字段。
答案 0 :(得分:0)
我不确定你为什么要在客户端上而不是在bean本身中这样做..
但是在jsf中你可以使用Converter来转换你的输入。看看这个例子。
很容易做到
http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/
我把重要的东西放在这里......
首先是页面..
<h:inputText id="bookmarkURL" value="#{user.bookmarkURL}"
size="20" required="true" label="Bookmark URL">
<f:converter converterId="com.mkyong.URLConverter" />
</h:inputText>
比你需要构建转换器
@FacesConverter("com.mkyong.URLConverter")
public class URLConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
String HTTP = "http://";
StringBuilder url = new StringBuilder();
//if not start with http://, then add it
if(!value.startsWith(HTTP, 0)){
url.append(HTTP);
}
url.append(value);
//use Apache common URL validator to validate URL
UrlValidator urlValidator = new UrlValidator();
//if URL is invalid
if(!urlValidator.isValid(url.toString())){
FacesMessage msg =
new FacesMessage("URL Conversion error.",
"Invalid URL format.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ConverterException(msg);
}
URLBookmark urlBookmark = new URLBookmark(url.toString());
return urlBookmark;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
return value.toString();
}
}
希望有所帮助..