Мне нужно проверить некоторые поля в xsl, вызвав нестатический метод класса Java - PullRequest
0 голосов
/ 11 декабря 2011

Мне нужно проверить некоторые поля в xsl, вызвав нестатический метод класса java Validator . Я хочу создать объект этого класса и передать его в xsl. После этого я хочу проверить, найдены ли ошибки.

Если я сделаю методы класса Valifator static - все работает нормально. ИЛИ ЖЕ: Если я создаю объект класса Validator в xsl - все тоже отлично работает.

Но как работать со нестатическими методами?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:validatorns="xalan://project.xmlxsl.xml.Validator"
extension-element-prefixes="validatorns">

<xsl:output method="xml" indent="yes"/>
<xsl:param name="name" />
<xsl:param name="validator" />

<xsl:variable name="checkName" select="validatorns:checkName($validator,$name)" />
...
<xsl:choose>
<xsl:when test="$checkName">
...
</xsl:when>
</xsl:choose>

</xsl:stylesheet>

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

Если в XSL есть какой-то неузнаваемый идентификатор объекта, вы можете использовать статический реестр для своего класса Validator.

Итак, вы создаете Validator, регистрируете его для документа, и когда checkName вызывается с правильным идентификатором, реестр найдет соответствующий Validator и будет использовать его.

После преобразования документа вы можете отменить регистрацию Validator. Обязательно используйте синхронизированный доступ к хэш-карте реестра, чтобы обеспечить безопасность потоков.

1 голос
/ 11 декабря 2011

Получение значения из XSLT, отличного от преобразованных документов, звучит немного странно на мой вкус.Но я думаю, вы могли бы использовать ThreadLocal.

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