0

我做了自定义 Keycloak 主题。我正在从 msg_en.properties 文件中检索文本并使用 ftl 文件和 Keycloak 属性显示文本。使用 ${msg(key)} 在 ftl 文件中添加的文本工作正常,只是无法检索从 java 脚本中动态添加的文本。

这是登录更新密码.ftl 文件

    <div id="password-error-message" class="keyclaok-err-msg"></div> here adding custom text
        <#if message?has_content>
            <div class="update-password-alert-div" id="keycloak-error-message">
                <#if message.type == "error" ||  message.type == "warning" >
                    <span class="kc-feedback-text keyclaok-err-msg">${kcSanitize(message.summary)?no_esc}</span>**//this works**
                </#if>
            </div>
        </#if>

这里 login.js 文件添加自定义功能

  $('#password-new').focusout(function(e) {
    var newPassword = this.value;
    var passwordValidation = [
      {  message: '${msg("passwordcharErrMsg")}', validation: /^.{8,}$/},
      {  message: '${msg("passwordNumErrMsg")}', validation: /[0-9]/ },
      {  message: '${msg("passwordSpCharErrMsg")}', validation: /[ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/},
      {  message: '${msg("passwordCapLetErrMsg")}', validation: /[A-Z]/}
   ];
    var passwordErrorMessage = [];

    for(let index = 0;index < passwordValidation.length;index++){
      if(!passwordValidation[index].validation.test(newPassword)){
        passwordErrorMessage.push(passwordValidation[index].message);
      }else{
        passwordErrorMessage.splice(index,1);
      }
    }
   if(this.value.length < 256){
    validPassword = true;
    removeError(e, this);
   showError("#password-error-message","");
   if(passwordErrorMessage.length) {
    var last = passwordErrorMessage.pop();
    var message = '${msg("passwordMainErrText")} ';
    if(passwordErrorMessage.length){
       message += passwordErrorMessage.join(", ");
       message += " and "+last + ".";
    }else{
      message += last + ".";
    }
    validPassword = false;
    applyError(e, this);
    showError("#password-error-message",message);
  }else{
    validPassword = true;
    removeError(e, this);
    showError("#password-error-message","");
  }
 }else{
  validPassword = false;
  applyError(e, this);
  showError("#password-error-message",'${msg("passwordMaxLenErrText")}');
 }

    $('#password-confirm').trigger('focusout');
    checkValidity();
  });
 
 
function showError(id,errorMessage){
    var message = String(errorMessage);
    $(id).html(message);
  }

最终输出-在此处输入图像描述

4

0 回答 0