Две кнопки, перенаправляющиеся на разные страницы, но имеющие ту же информацию [дубликат]

Прежде всего, JSF является генератором кода HTML. Поэтому в JSF это не так, как в «простом» HTML. Вы должны просто не смотреть на структуру файловой системы в проекте webapp при создании ссылок в HTML. Вы должны посмотреть на общедоступную структуру URL этих ресурсов. Это именно веб-браузер, которому приходится вызывать и загружать эти ресурсы, а не веб-сервер. Веб-браузер абсолютно ничего не знает о структуре файловой системы на веб-сервере. Это не относится к проектам JSF. Это относится ко всем веб-проектам.

Относительные URL-адреса не относятся к их местоположению в структуре файловой системы в проекте webapp. Они относятся к URL-адресу запроса открытого HTML-документа, точно такого, который вы видите в адресной строке браузера. Следует отметить, что, когда в документе HTML присутствует элемент , все относительные URL-адреса в документе HTML, начиная с /, будут относиться к нему.

Учитывая настройку webapp, которая настроена с FacesServlet отображением шаблона URL-адреса *.xhtml и развертывается до localhost:8080 с контуром пути /context, URL-адрес файла /index.xhtml в корневом каталоге проекта будет следующим:

http://localhost:8080/context/index.xhtml
----   -------------- ------- -----------
  |           |          |         `-- resource
  |           |          `-- path (can be multiple folders)
  |           `-- domain (and port)
  `-- scheme

Когда вы в настоящее время находитесь в http://localhost:8080/context/index.xhtml, и хотите создать ссылку на http://localhost:8080/context/calculate/calculate.xhtml, то все приведенные ниже пути в конечном итоге указывают на точно такой же абсолютный URL.

  • Относительный URL, начинающийся с //, относится к текущей схеме.
    link
    
  • Относительный URL, начинающийся с /, относится к домену.
    link
    
  • Относительный URL-адрес , а не , начиная с /, относительно пути.
    link
    

И когда вы в настоящее время находитесь в http://localhost:8080/context/calculate/calculate.xhtml и хотите установить ссылку на http://localhost:8080/context/index.xhtml, применяются те же правила:

  • Относительный URL, начинающийся с //, относится к текущей схеме.
    link
    
  • Относительный URL, начинающийся с /, относится к домену.
    link
    
  • Относительный URL-адрес , а не , начиная с /, относительно пути.
    link
    

Как вы, вероятно, понимаете, относительный URL, начинающийся с /, не зависит от текущего пути и домена. Итак, это URL-адрес, который вы действительно хотите использовать повсюду в своем веб-приложении, не беспокоясь о проблемах обслуживания при изменении домена или перемещении файлов на сервере. Остается только динамичность контекстного пути. Вероятно, вы уже знаете, что это значение не контролируется внутри webapp. Вы действительно хотели бы избежать его жесткого кодирования. Однако вы можете легко позволить JSF распечатать его программно с небольшой помощью EL. Это просто доступно HttpServletRequest#getContextPath() , а HttpServletRequest находится в EL, доступном как неявный объект #{request}.

link
link

Достаточно утомительно повторять это каждый раз. К счастью, JSF предлагает компонент для самой цели генерации элемента HTML с текущим контуром контекста автоматически.



Обратите внимание, что outcome должен представлять идентификатор вида JSF, который не обязательно совпадает с URL-адресом (он будет, когда вы нажмете FacesServlet на *.xhtml). Вы можете даже опустить расширение файла здесь, JSF автоматически обнаружит его как часть механизма «неявной навигации».



См. Также:

23
задан Nick 8 February 2013 в 05:23
поделиться

3 ответа

Обратите внимание:

Несколько кнопок отправки php различные действия

Поместите этот скрипт на свою страницу:

<script>
    function submitForm(action)
    {
        document.getElementById('columnarForm').action = action;
        document.getElementById('columnarForm').submit();
    }
</script>

Измените код ввода:

<input type="image" name="camper" onclick="submitForm('formindb_hoh_1.php')" value="camper" src="../images/apps/camperBtn.png" class="submit_button" />
<input type="image" name="medical" onclick="submitForm('formindb_hoh_2.php')" value="medical" src="../images/apps/medicalBtn.png"class="submit_button" />
23
ответ дан Community 20 August 2018 в 08:12
поделиться
  • 1
    OP хочет публиковать на другом скрипте полностью. – Michael Berkowski 8 February 2013 в 05:26
  • 2
    И убедитесь, что вы закрыли форму с помощью & lt; / form & gt; – Redzwan Latif 8 February 2013 в 05:26
  • 3
    op sorry Я отредактирую код – Redzwan Latif 8 February 2013 в 05:27

Наконец, я получил свой ответ, потратив больше часа. Я пробовал использовать различные методы, такие как случай переключения, jquery и JavaScript. Но я использовал только тег HTML5 formaction, и теперь моя форма две кнопки отправки работают в двух местах.

Код:

   <input type="submit" class="btn btn-success" value="Pay Now" name="submit"  style="width: 100%; letter-spacing: 1px; color: #fff; border: none;padding:  10px;" formaction="example.php">

   <button type="submit" class="btn btn-success" name="submit" style="width: 100%; letter-spacing: 1px; color: #fff; border: none;padding: 10px; margin-top: 15px;" formaction="mail.php"> Button</buttton>

1
ответ дан Ashique Hussain Ansari 20 August 2018 в 08:12
поделиться

Нет JS, используйте HTML5.

Измените кнопки отправки, чтобы использовать новую формулу атрибута кнопки HMTL5:

<button type="submit" name="camper" formaction="formindb_hoh_1.php">Camper</button>
<button type="submit" name="camper" formaction="formindb_hoh_2.php">Medical</button>

Ссылка: http://devdocs.io / HTML / кнопка элемент /

64
ответ дан szuflad 20 August 2018 в 08:12
поделиться
  • 1
    Это должен быть принятый ответ! Просто протестировал его и отлично работает! Любые слова о совместимости браузера и устройства? – maartenmachiels 6 February 2015 в 18:46
  • 2
    Интересно, как это взаимодействует с формами ASP.NET MVC, поскольку действие формы указано в самой форме, а не в отдельных кнопках. – Triynko 8 September 2015 в 20:24
  • 3
    & Lt; & кнопка GT; действие отменяет действие из & lt; form & gt; тег и эффект зависят от самого браузера, а не от бэкэнд. – szuflad 10 September 2015 в 08:14
  • 4
    Не работает в IE до версии 9. Необходимо разместить сообщение на своем сайте: Update your browser. – Jasom Dotnet 19 December 2015 в 08:13
  • 5
    Черт, это выглядело так хорошо, но совместимость выглядит так, что это будет боль в дикой природе. Только IE 10 :( Умеешь ли ты, что IE почти ушел :) Но Firefox выглядит как настоящая проблема, которая поддерживается только с версии 4 и далее (помните, что статистика использования повсюду). Хотелось бы использовать это, но думаю, что я поеду JS, а затем буду страдать, когда JS отключится. – BeNice 25 January 2016 в 21:48
Другие вопросы по тегам:

Похожие вопросы: