После некоторых настроек, вот что работает для меня:
// lib/js/src/interop/Carousel.js
import React from 'react'
import Slider from 'react-slick'
const Carousel = props => {
return (
{props.name} 1
)
}
export default Carousel
// src/Carousel.re
[@bs.module "./interop/Carousel"] [@react.component]
external make: (~name: string) => React.element = "default"; // handle default export
// src/Index.re
ReactDOMRe.renderToElementWithId( , "carousel");
Поскольку Carousel.js
использует es6 и jsx, мне нужно настроить webpack для работы с ним ( es6 JSX ). И bsconfig.json
должны иметь эти настройки:
"reason": {
"react-jsx": 3
},
"package-specs": [
{
"module": "commonjs",
"in-source": false
}
]
Это - мое собственное решение, в основном обходное решение, которое вручную делает то, что должна делать привязка данных чаш Грааля (но не делает):
Map<String,String> checkboxes = params.findAll{def i = it.key.endsWith("._fixiert")} // all checkboxes
checkboxes.each{
String key = it.key.substring(0, it.key.indexOf("._fixiert"))
int tagIdx = Integer.parseInt(key.substring(key.indexOf('[')+1, key.indexOf(']')))
int zuwIdx = Integer.parseInt(key.substring(key.lastIndexOf('[')+1, key.lastIndexOf(']')))
if(params.get(key+".fixiert"))
{
dienstplanInstance.tage[tagIdx].zuweisungen[zuwIdx].fixiert = true
}
else
{
dienstplanInstance.tage[tagIdx].zuweisungen[zuwIdx].fixiert = false
}
}
Работы, не требует никакого изменения в чашах Грааля самого, но не является допускающим повторное использование (вероятно, мог быть сделан так с некоторой дополнительной работой).
Это - решение парень по имени Julius Huang, предложенный в списке рассылки пользователя чаш Грааля. Это является допускающим повторное использование, но полагается на JavaScript для заполнения скрытого поля с "ложным" ответом для флажка непроверенного, который, к сожалению, не отправляет HTML.
Я взламываю GSP для отправки "лжи", когда снимают флажок (верный-> ложь) с пользовательским TagLib.
Флажком по умолчанию ничего не отправляют, когда снятие флажка, таким образом, я использую флажок в качестве обработчика событий, но отправляю скрытое поле вместо этого.
"params" в Контроллере может обработать "ложь"-> "верный" без любой модификации. например, Все остается тем же в Контроллере.
Пользовательское Использование Тега в GSP (образец usedfunc_F "верен"),
<jh:checkBox name="surveyList[${i}].usedfunc_F" value="${survey.usedfunc_F}"></jh:checkBox>
Вот то, что Тег генерируют,
<input type="hidden" name="surveyList[#{i}].usedfunc_F" id="surveyList[#{i}].usedfunc_F" value="false" />
<input type="checkbox" onclick="jhtoggle('surveyList[#{i}].usedfunc_F')" checked="checked" />
JavaScript
<script type="text/javascript">
function jhtoggle(obj) {
var jht = document.getElementById(obj);
jht.value = (jht.value !='true' ? 'true' : 'false');
}
</script>
Я думаю, что самое простое обходное решение должно было бы присоединить отладчик и видеть, почему Grails не удается заполнить значение. Рассмотрение Grails является открытым исходным кодом, Вы сможете получить доступ к исходному коду и после того как Вы выясняете решение для него, можно исправить версию.
Я также нашел эту другую ошибку GRAILS-2861, которая упоминает проблему, связанную с привязкой к булевским переменным (см. комментарий Marc в потоке). Я предполагаю, что это - точно проблема, которую Вы описываете.
Я создал бы приложение небольшой выборки, которое демонстрирует проблему, и присоедините ее к ошибке Grails (или создайте новую). Кто-то здесь может отлаживать Ваше демонстрационное приложение, или Вы покажете, что ошибка действительно не исправлена.
Испытайте это, установите журналы для ОТЛАДКИ, сначала попробуйте первые 3, если они не разоблачают проблему, зеркально отразите их всех для ОТЛАДКИ:
codehaus.groovy.grails.web.servlet="error" // controllers
codehaus.groovy.grails.web.pages="error" // GSP
codehaus.groovy.grails.web.sitemesh="error" // layouts
codehaus.groovy.grails."web.mapping.filter"="error" // URL mapping
codehaus.groovy.grails."web.mapping"="error" // URL mapping
codehaus.groovy.grails.commons="info" // core / classloading
codehaus.groovy.grails.plugins="error" // plugins
codehaus.groovy.grails.orm.hibernate="error" // hibernate integration
Это должно позволить Вам видеть точно, когда и как установка параметров перестала работать, и, вероятно, выясните работу вокруг.