信息:警告:FacesMessage已入队,但可能尚未显示

时间:2013-09-17 18:27:19

标签: jsf message

我创建了一个带有表单的用户界面,以便从用户那里获取信息。当我提交表单时,它会在服务器日志中输出以下警告:

INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_idt7:j_idt11[severity=(ERROR 2), summary=(j_idt7:j_idt11: Validation Error: Value is not valid), detail=(j_idt7:j_idt11: Validation Error: Value is not valid)]

我试图解决它,但我不明白怎么做。这个问题是怎么造成的,怎么解决?

3 个答案:

答案 0 :(得分:10)

关于引用未显示的Validation Error: Value is not valid消息的警告,这意味着您在某个<h:selectXxx>组件的某个位置,例如<h:selectOneMenu>没有关联的<h:message>,因此JSF是无法直接在UI中显示有关转换/验证错误的消息。

要修复特定警告,只需添加<h:message>

即可
<h:selectOneMenu id="foo" ... />
<h:message for="foo" />

请注意,当您使用<f:ajax>提交表单时,您不应忘记在ajax-update中包含这些消息。首先,使用render="@form"更新整个表单。

至于消息中提到的具体验证错误问题,请转到以下答案:Validation Error: Value is not valid

答案 1 :(得分:-1)

如果您使用的是素数,请不要忘记添加:

<!DOCTYPE html>
<html>
  <body>
    <button onclick="start()">Click me</button>
    <p id="demo"></p>
    <script>
      var data;
      var score = 100;

      function getEtherPrice () {
        fetch ('https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD')
          .then(response => response.json())
          .then(data => {
            console.log(data)

          });
      }

      function start () {
        getEtherPrice()

        if (data > 120) {
          score = score * 2
        } else {
          score = score / 2
        }

        document.getElementById("demo").innerHTML = score;
      }
    </script>
  </body>
</html>

答案 2 :(得分:-2)

这是无效值问题。您很可能输入了字符而不是整数值。对此进行检查,我建议进行异常处理以免再次遇到此类问题。