Передача значения с страницы xhtml в управляемый компонент [duplicate]

«Красивый интерфейс» на вашем скриншоте - Swagger UI . Это бесплатно и с открытым исходным кодом. В http://petstore.swagger.io есть демо, где вы можете загрузить свои собственные .json / .yaml-файлы из URL-адреса и посмотреть, как они будут отображаться.

Чтобы использовать пользовательский интерфейс Swagger локально:

  1. Перейдите в https://github.com/swagger-api/swagger-ui и загрузите репозиторий как ZIP: Download Swagger UI [/g8]
  2. Отредактируйте файл dist\index.html и измените строку
    url: "http://petstore.swagger.io/v2/swagger.json",
    
    на URL вашего файла Swagger .json или .yaml, например
    url: "http://api.mysite.com/swagger.json",
    
  3. (Необязательно) Добавьте / измените другие параметры конфигурации в коде инициализации SwaggerUIBundle в dist\index.html.
  4. Откройте dist\index.html файл в вашем браузере, чтобы просмотреть ваши документы API. Примечание. Если спецификация не загружается или «попробуйте» не работает, вам, вероятно, необходимо включить CORS на вашем сервере. См. https://github.com/swagger-api/swagger-ui#cors-support и https://enable-cors.org .
  5. Загрузите файлы из папки dist где-то на ваш сервер - и теперь у вас есть довольно API-документы!

Alternativey, SwaggerHub (о котором вы упомянули ) обеспечивает облачный хостинг для спецификаций Swagger, среди прочего, и имеет интегрированный интерфейс Swagger. Вы можете импортировать файлы Swagger .json / .yaml и иметь свои документы API, размещенные на SwaggerHub. Доступен свободный план .

5
задан BalusC 20 November 2015 в 12:09
поделиться

1 ответ

Вам нужно поместить все <h:inputXxx> / <h:selectXxx> компоненты в <h:form> и привязать их атрибут value к свойству bean через выражение EL, например #{bean.property}, поддерживаемое парой getter / setter. При правильной установке JSF автоматически устанавливает значения в компоненте, когда форма отправляется через компонент <h:commandXxx> в той же форме. Вы можете указать метод действия компонента в атрибуте action компонента <h:commandXxx> через выражение EL, подобное #{bean.action}, которое указывает на голый метод action(). Все представленные значения доступны прямо там обычным способом Java.

Учитывая этот пример формы JSF с одним полем ввода и одним полем выбора:

<h:form>
    <h:inputText value="#{bean.text}" required="true" />
    <h:selectOneMenu value="#{bean.choice}" required="true">
        <f:selectItem itemValue="#{null}" />
        <f:selectItem itemValue="One" />
        <f:selectItem itemValue="Two" />
        <f:selectItem itemValue="Three" />
    </h:selectOneMenu>
    <h:commandButton value="submit" action="#{bean.submit}" />
    <h:messages />
    <h:outputText value="#{bean.result}" />
</h:form>

Следующий компонент распечатывает предоставленные значения в stdout, доказывая, что JSF уже установил значения задолго до момента доступа к нему в методе действий.

package com.example;

import javax.inject.Named;
import javax.enterprice.context.RequestScoped;

@Named // Use @javax.faces.bean.ManagedBean on outdated environments.
@RequestScoped // Use @javax.faces.bean.RequestScoped on outdated environments.
public class Bean {

    private String text;
    private String choice;
    private String result;

    public void submit() {
        result = "Submitted values: " + text + ", " + choice;
        System.out.println(result);
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getChoice() {
        return choice;
    }

    public void setChoice(String choice) {
        this.choice = choice;
    }

    public String getResult() {
        return result;
    }
}

Вот и все. Поворот регулярной формы в форму ajax - это вопрос о вложении <f:ajax> в командном компоненте, как показано ниже.

<h:commandButton value="submit" action="#{bean.submit}">
    <f:ajax execute="@form" render="@form" />
</h:commandButton>

Вы можете найти другой пример и ценные ссылки внизу нашего JSF wiki page .

Обратите внимание, что все, что вы намерены делать с представленными значениями, несут ответственность JSF. Например, манипулируя им, переходя в другой класс, сохраняя его в базе данных и т. Д. Все это не связано с JSF. Он как платформа, основанная на HTML-формах, уже выполнила свою работу по предоставлению вам представленных значений в удобстве использования переменных Java. Остальное зависит от вас.

Чтобы исследовать следующий шаг, вы должны в этот момент просто делать так, как будто у вас уже есть куча готовых / жестко закодированных переменных, а не весь пользовательский интерфейс на основе JSF. Например, чтобы сохранить значения в базе данных, люди обычно используют инфраструктуру уровня бизнес-сервисов, такую ​​как EJB, которая, в свою очередь, использует инфраструктуру уровня сохранения, такую ​​как JPA. Некоторые люди даже используют JDBC «простой ваниль». Для получения дополнительных ссылок на конкретные примеры, начните здесь: JSF-контроллер, служба и DAO .

20
ответ дан BalusC 22 August 2018 в 11:38
поделиться
  • 1
    Если мы предположим, что существовал класс сущностей, у которого есть текстовые и числовые геттеры / сеттеры, как можно использовать этот объект вместо того, чтобы снова определять геттеры / сеттеры? – hallaji 2 September 2017 в 08:12
  • 2
    @hallaji Продолжить последнюю ссылку в ответе. – BalusC 3 September 2017 в 13:46
Другие вопросы по тегам:

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