Как использовать окно подтверждения JavaScript в форме, и я могу использовать JSP в нем? - PullRequest
0 голосов
/ 19 апреля 2011

Мой код JavaScript не работает:

<script type="text/javascript">

    function verify() {
        var amount = document.getElementById("amount");
        var commission = document.getElementById("commission");
        var commissionPayed = parseFloat(amount) * parseFloat(commission);
            msg = "Withdraw Amount: " + amount.value + "\n Commission payed: " + commissionPayed.value;
            //all we have to do is return the return value of the confirm() method
            return confirm(msg);
    }

Сама форма:

      <form action="Controller" method="post" onSubmit="return verify()">
                             <h1>Withdraw</h1>
             <input type="hidden" name="command" id="command" value="withdrawAction">
             <input type="hidden" name="commission" id="commission" value="${commission}">
             <p>Amount: <input type="text" name="amount" id="amount"/></p>  
             <input type="submit" name="name" value="Withdraw" onclick="confirmation()"/></p>

      </form>

В сообщении я получаю комиссионное вознаграждение за неопределенное значение. Что я делаю не так?

Есть ли способ использовать JSP внутри скрипта, например ${object}?

Могу ли я сделать весь расчет в JSP?

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

.value является элементом каждого элемента формы, а не каждого числового значения.

function verify(){
    var amount = document.getElementById("amount").value;
    var commission = document.getElementById("commission").value;
    var commissionPayed = parseFloat(amount) * parseFloat(commission);
    msg = "Withdraw Amount: " + amount + "\n Commission payed: " + commissionPayed;
    //all we have to do is return the return value of the confirm() method
    return confirm(msg);
}

Конечно, по соображениям безопасности вам необходимо снова выполнить те же вычисления на сервере - вычисления JavaScript выполняютсяподходит только для подтверждения пользователя.Существуют такие инструменты, как Greasemonkey, Tamper Data и Firebug;Вы не можете доверять веб-браузеру, предоставляя точные вычисления для внутренней бизнес-логики.

Если вы включаете какие-либо переменные на стороне сервера в код HTML, CSS или JavaScript (особенно строковые значения), они должны бытьдолжным образом экранирован (с использованием функции, подходящей для рассматриваемого формата данных, или возможна атака межсайтовых скриптов (XSS). Ссылка на страницу, на которую я ссылаюсь, содержит примеры фрагментов уязвимого кода JSP.

Например, JSP имеет тег с именем , который выполняет экранирование HTML.Однако если вы полагаетесь на него в блоке кода JavaScript (или в атрибуте стиля), ваш сценарий может быть небезопасным.

0 голосов
/ 19 апреля 2011

Могу ли я сделать весь расчет в JSP? ... Я бы сделал это на стороне сервера, да. Не стоит доверять такому расчету на стороне клиента.

Чтобы вывести значение в jsp, вы можете использовать стандартный тег: <c:out value="${user.firstName}"/>

Существует множество руководств по теме тега, если вы тоже немного погуглили. Например http://www.developer.com/java/ejb/article.php/1447551/An-Introduction-to-JSP-Standard-Template-Library-JSTL.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...