Как представить дату и/или информацию времени в JSON?

До тех пор, пока это разрешено правилами области видимости, наилучшим подходом является позволить инфраструктуре обрабатывать внедрение свойств и bean-компонентов в другие bean-компоненты.

Так как вам нужен bean-объект с областью приложения внутри bean-объекта сессионной области, вы можете просто определить внедрение следующим образом:

<managed-bean>
    <managed-bean-name>Actions</managed-bean-name>
    <managed-bean-class>com.utils.actions</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>application</property-name>
      <value>#{App}</value>
    </managed-property>
</managed-bean>

Чтобы принять внедрение свойства внутри вашего компонента Bean-действия, определите общедоступный выполните следующие действия:

public class actions implements Serializable {

    private Application app;

    public void setApplication(Application app) {
        this.app = app;
    }

}

Таким образом, вы можете держать бин приложения в любом месте, где вам это нужно, в классе, не решая его снова и снова, когда вам это нужно. Вы также можете решить, что ссылка на компонент приложения - это слишком много, и вам просто нужны данные. В этот момент вам просто нужно настроить faces-config.xml и метод получения соответственно, чтобы получить именно это.

    <managed-property>
      <property-name>allData</property-name>
      <value>#{App.allData}</value>
    </managed-property>
public class actions implements Serializable {

    private static final long serialVersionUID = 1L;

    private ArrayList<District> allData;

    public void setAllData(ArrayList<District> allData) {
        this.allData = allData;
    }

}

Теперь два совета.

  1. Я бы не рекомендовал вам инициализировать данные компонента в конструкторе. Бины предназначены для ленивого использования, и поэтому данные должны быть лениво загружены. Если вам нужно предварительно загрузить данные, конструктор не в нужном месте. К сожалению, мы застряли с нежитью XPages, поэтому нет ничего лучше, чем исправить проблему, проверив, установлена ​​ли рассматриваемая переменная или нет. Это означает использование подхода, подобного следующему:
public class Application implements Serializable {

    private static final long serialVersionUID = 1L;

    private ArrayList<District> allData;

    //public Application(){
    //    try {
    //        getAllData();
    //    } catch (NotesException e) {
    //        e.printStackTrace();
    //    }
    //}

    public ArrayList<District> getAllData() {
        if (allData == null) {
           try {
                allData = // your logic result
            } catch (NotesException e) {
                throw new FacesException(e);
            }
        }

        return allData;
    }

}
  1. Я бы посоветовал вам использовать общепринятые соглашения об именах, которые говорят, что имена свойств должны начинаться со строчных букв (приложение вместо приложения) и имена классов с заглавными буквами (com.utils.Actions вместо com.utils.actions)
19
задан Atif Aziz 18 September 2008 в 10:13
поделиться

2 ответа

Единственное представление, которое я видел используемый (хотя по общему признанию мой опыт ограничен DOJO) ISO 8601 , который работает приятно и представляет примерно что-либо, о чем Вы могли возможно думать.

Для примеров, можно посетить ссылку выше.

Профессионалы:

  • Представляет в значительной степени что-либо, что Вы могли возможно бросить в него, включая промежутки. (т.е. 3 дня, 2-часовые)

Недостатки:

  • Umm... Я не знаю на самом деле. Кроме, возможно, этого мог бы взять немного привыкающее к? Конечно, достаточно легко проанализировать, если там не создаются в функциях уже для парсинга его.
13
ответ дан 30 November 2019 в 04:48
поделиться

Нет никакого литерала набора так использование, что является самым легким для Вас. Для большинства людей это - или строка вывода UTC или длинное целое центрируемого UTC временного кода.

Read это некоторое время больше фона: http://msdn.microsoft.com/en-us/library/bb299886.aspx

2
ответ дан 30 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

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