2014-07-23 3 views
1

Мне трудно получить элемент управления dynamicContent, чтобы работать так, как хотелось бы. Я нашел этот бит кода в файле pasteBin, и я думаю, что это может быть только то, что мне нужно, но я хотел бы понять, что он делает, прежде чем пытаться его реализовать.Динамическое управление динамическим контентом

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" 
       xmlns:xe="http://www.ibm.com/xsp/coreex"> 
     <xp:button value="Switch!" id="switchButton"> 
       <xp:eventHandler event="onclick" submit="true" 
         refreshMode="partial" refreshId="dynamicCustomControl"> 
         <xp:this.action><![CDATA[#{javascript:viewScope.controlName = 'cc_test2.xsp'; 
     getComponent('dynamicCustomControl').show(null)}]]></xp:this.action> 
       </xp:eventHandler></xp:button> 
     <xe:dynamicContent id="dynamicCustomControl"> 
         <xp:include id="customControlInluder"> 
           <xp:this.pageName> 
    <![CDATA[${javascript:viewScope.controlName||"cc_test1.xsp"}]]> 
    </xp:this.pageName> 
         </xp:include> 
     </xe:dynamicContent> 
</xp:view> 

В частности, я не понимаю, синтаксис этой строки:

<![CDATA[${javascript:viewScope.controlName||"cc_test1.xsp"}]]> 

Я предпочитаю использовать viewScope.get («CONTROLNAME»), а не в краткой форме viewScope.controlName но дон Не понимаю значения || в этой строке кода.

также линия

<xp:include id="customControlInluder> 

, вероятно, является несущественным опечатка.

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

Редактирование и обновление ---

Это очень короткий фрагмент кода может быть просто один из наиболее сохранившихся тайн вокруг. Я только что прошел через это, и каждый из настраиваемых элементов управления, отображаемых с помощью dynamicCustomControl, содержит элемент управления dynamicContent. Таким образом, удалось очень хорошо встроить dynamicContent внутри dynamicContent. Что до этого момента я никогда не мог нормально работать. Теперь он работает очень плавно с минимальным шумом & muss. Спасибо за комментарии и помощь.

+0

Я тоже предпочитаю в основной всегда использовать «получить» и «положить». Однако Tim Tripcony всегда говорил мне, что область областей с областью видимости является допустимым исключением. Я считаю, что поскольку viewScope.varName можно использовать в EL тогда. Я все еще использую get и put чаще, чем нет, но я открыт для использования более короткой версии в наши дни. –

+0

Я считаю, что это делает более очевидным, что делает код, и поскольку моя память действительно хороша, но только не очень длинная, Мне нужна всякая помощь. –

+0

Вот интересный фрагмент кода: (sessionScope.get ("ssApplication") = "Demo")? true: false Что дает ошибка времени выполнения, потому что назначение не работает. Ясно, что это ошибка программирования, и я действительно имел в виду == «Демо». Однако если вы введете: (sessionScope.ssApplication = «Demo»)? true: false, он соответствует и работает и дает ответ истины. Совершенно верно, но абсолютно неправильно. Это упрощенная версия, потому что в моем тесте ssApplication был «Demo», поэтому очевидное было не так очевидно. Поэтому я теперь помещаю get и накладываю все свои назначения переменных области. –

ответ

4

Этот код JavaScript viewScope.controlName||"cc_test1.xsp" возвращает в качестве результата значение viewScope.controlName если это не

  • нуль
  • неопределенными
  • NaN
  • "" или '' (= пустая строка)
  • ИНН

В противном случае возвращается "cc_test1.xsp". Вы можете найти подробное объяснение here.

Это короткий и хитрый способ

viewScope.controlName ? viewScope.controlName : "cc_test1.xsp" 

или

if (viewScope.controlName) {viewScope.controlName} else {"cc_test1.xsp"} 

Идентификатор в <xp:include id="customControlInluder"> не используется в коде, так что не важно, как это называется, хотя «customControlIncluder» звучит намного лучше.

Я всегда использую короткую версию для переменных области для получения и настройки значений, и у меня еще не было проблем с этим.

+0

Хотел бы я поддержать этот комментарий 10 раз. Отличное объяснение! –

+0

Спасибо Knutt - короткие формы велики, но не всегда очевидны. Это должно делать именно то, что я хочу. –

1

Bill, думаю, он просто говорит: «Используйте имя управления viewcope, а если null, используйте cc_test1.xsp». Если первый случай истинен, то второй не оценивается.

JavaScript OR (||) variable assignment explanation

Смежные вопросы