JSF:如何在发送请求之前更改jsf输入的值(加密密码)

时间:2014-06-01 12:18:45

标签: javascript java-ee encryption jsf-2 input

我正在努力实现 FriendlyCryptoNeighbor here的非常好的答案,而且我对所有jsf的东西都很陌生。

为了加密密码(如RSA_With_Public_Key(SHA256(password)))客户端,我想覆盖<h:input以在javascript中调用加密函数。但我无法找到办法做到这一点。

问题是我有一个绑定到输入值的bean ...在一个RESTful服务器中,它很容易加密并从javascript发出请求,但在那里,我不确定所有这些是如何工作的。< / p>

- 更新1

目前,我点击commandButton执行一个javascript脚本,它会更新我的bean绑定的隐藏字段。

1 个答案:

答案 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();

}   

}

希望有所帮助..