В чем разница между # {expr} и $ {expr} в jsf? Есть ли случаи, когда мы предпочитаем $ {expr}? [Дубликат]

Обновление на основе последней документации для Android (март 2017 года):

Когда вы получаете этот тип ошибки:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
        at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374)
        at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:209)
        at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478)
        at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
        at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
        at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
        at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
        at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
        at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)

проблема может быть одной из следующих:

  1. CA, выдавший сертификат сервера, был неизвестен
  2. Сертификат сервера не был подписан ЦС, но был подписан сам по себе
  3. . Конфигурация сервера Отсутствие промежуточного CA

Решение состоит в том, чтобы научить HttpsURLConnection доверять определенному набору ЦС. Как? Пожалуйста, проверьте https://developer.android.com/training/articles/security-ssl.html#CommonProblems

Другие, которые используют AsyncHTTPClient из библиотеки com.loopj.android:android-async-http проверьте Настройка AsyncHttpClient для использования HTTPS .

13
задан Roman 5 December 2009 в 01:44
поделиться

2 ответа

Резюмируя понятным языком: $ {выражение} делает только получает , а # {выражение} может выполнять оба получить и установить . Это связано с тем, что $ {выражение} оценивается только один раз (немедленно), тогда как # {выражение} оценивается при каждом доступе (отложенном).

В JSF на JSP 2.0 или Facelets 1.x, если вы поместите что-то вроде этого в качестве первого выражения страницы

${bean.property}

, где bean - управляемый компонент с ограниченным объемом запроса, вы не увидите ничего . Но если bean-компонент является управляемым bean-компонентом с областью сеанса и уже был создан ранее, тогда вы увидите, что значение свойства печатается. Это также применимо, если управляемый объект EJB с заданной областью действия был создан до # {bean. xxx} на той же странице.

Если вместо этого вы выполните первое выражение страницы

#{bean.property}

, тогда EL проверит, является ли bean нулевым, и если да, то он будет установить (создать) новый. Если свойство установлено во время создания bean-компонента, вы увидите, что свойство отображается этим выражением.

Все это обязательно для получения среди других компонентов JSF UIInput , таких как на работу. Когда вы отправляете форму, # {выражение} будет установить значения в bean-компоненте.

тогда вы увидите свойство, отображаемое этим выражением.

Все это необходимо для работы среди других компонентов JSF UIInput , таких как . Когда вы отправляете форму, # {выражение} будет установить значения в bean-компоненте.

тогда вы увидите свойство, отображаемое этим выражением.

Все это необходимо для работы среди других компонентов JSF UIInput , таких как . Когда вы отправляете форму, # {выражение} будет установить значения в bean-компоненте.

25
ответ дан 1 December 2019 в 19:40
поделиться

Из Учебник по JavaEE :

Все выражения, использующие синтаксис $ {}, оцениваются немедленно. Эти выражения могут использоваться только в тексте шаблона или в качестве значения атрибута тега JSP, который может принимать выражения времени выполнения. [...] Выражения немедленной оценки всегда являются выражениями значений, доступными только для чтения. Выражение, показанное выше, может получить только общую цену из корзины; он не может установить общую цену.
Выражения отложенной оценки принимают форму # {expr} и могут оцениваться на других этапах жизненного цикла страницы, как определено любой технологией, использующей выражение. В случае технологии JavaServer Faces ее контроллер может оценивать выражение на разных этапах жизненного цикла в зависимости от того, как выражение используется на странице.
9
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

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