0

メッセージ付きの簡単なページを作成します。

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
<f:view locale="#{languageController.locale}"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
    </h:head>
    <h:body>
        <script type="text/javascript">
            var message = '#{msg.validation_message}';
            var notValidMessage = '#{msg.not_submit_message}';
            var notValidCurrentFormMessage = '#{msg.partial_valid}';
            var hap = 'happiness';
        </script>
    </h:body>
</f:view>
</html>

そして、検証フォーム用の JS ファイルがあります。

function validateForm(formId, elementIds, lang) {
    var valid = validateFields(formId, elementIds, lang);
    if (valid) {        
        return true;
    } else {
        alert(message);
        return false;
    }
}

Facelets ページで、Facelets ファイルを JS ファイルとして含めます。

<h:outputScript library="js" name="errorNames.xhtml"/>
<h:outputScript library="js" name="validation.js"/>

しかし、ページerrorNames.xhtmlが正しく含まれていないようです。

どうすれば問題を解決できますか?

4

1 に答える 1

1

この構成は絶対に無効です。は<h:outputScript>、物理的に有効な JS ファイルを指している必要があります。

あなたの最善の策は<ui:include>、それをインラインで含めることです。

したがって、/WEB-INF/includes/script.xhtml(いいえ、XML プロローグなし、doctype なし、html/head/body なし、f:view はマスター テンプレートに含まれる必要があります。以下のコードは現状のままです):

<ui:composition
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <h:outputScript>
        var message = '#{msg.validation_message}';
        var notValidMessage = '#{msg.not_submit_message}';
        var notValidCurrentFormMessage = '#{msg.partial_valid}';
        var hap = 'happiness';
    </h:outputScript>
</ui:composition>

(これらの変数の 1 つに単一引用符、改行などの JS の特殊文字が含まれている場合は常にエラーが発生しやすいことに注意してください。必要に応じてOmniFaces #{of:escapeJS()}を使用して JS をエスケープしてください)

そしてで/some.xhtml

<ui:include src="/WEB-INF/includes/script.xhtml" />
<h:outputScript library="js" name="validation.js" />

具体的な問題とは関係ありませんが、リソースの使用方法libraryは完全に正しくありません。JSF リソース ライブラリは何のためにあり、どのように使用する必要がありますか? をよくお読みください。

于 2013-01-22T14:49:54.060 に答える