Когда вы делаете что-то подобное в своей конфигурации Spring XML
<bean id="fooClassInstance" class="my.package.FooClass">
<property name="myproperty" value="${variable}" />
</bean>
Spring использует PropertyPlaceholderConfigurer
для поиска этих переменных в переменных System / enviroment и / или в списке предопределенных файлов свойств.
Таким образом, самый простой способ - передать это значение как переменную системы или среды с помощью -Dvariable=value
.
Если вы хотите передать эти значения в качестве аргументов в min
, вы все равно можете делать такие хаки, как
public static void main(String[] args) {
// parse arguments into key, value pairs
System.setProperty(<key>, <value>);
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(<your XML config file>);
// use Spring context to get beans
}
Вот функция, которую я закончил писать, которая делает работу довольно хорошо (насколько я могу судить в любом случае).
Я, безусловно, открыт для предложений по улучшению, если они у кого-то есть. Спасибо.
function cleanWordPaste( in_word_text ) {
var tmp = document.createElement("DIV");
tmp.innerHTML = in_word_text;
var newString = tmp.textContent||tmp.innerText;
// this next piece converts line breaks into break tags
// and removes the seemingly endless crap code
newString = newString.replace(/\n\n/g, "<br />").replace(/.*<!--.*-->/g,"");
// this next piece removes any break tags (up to 10) at beginning
for ( i=0; i<10; i++ ) {
if ( newString.substr(0,6)=="<br />" ) {
newString = newString.replace("<br />", "");
}
}
return newString;
}
Надеюсь, это поможет некоторым из вас.
Я использую это:
$(body_doc).find('body').bind('paste',function(e){
var rte = $(this);
_activeRTEData = $(rte).html();
beginLen = $.trim($(rte).html()).length;
setTimeout(function(){
var text = $(rte).html();
var newLen = $.trim(text).length;
//identify the first char that changed to determine caret location
caret = 0;
for(i=0;i < newLen; i++){
if(_activeRTEData[i] != text[i]){
caret = i-1;
break;
}
}
var origText = text.slice(0,caret);
var newText = text.slice(caret, newLen - beginLen + caret + 4);
var tailText = text.slice(newLen - beginLen + caret + 4, newLen);
var newText = newText.replace(/(.*(?:endif-->))|([ ]?<[^>]*>[ ]?)|( )|([^}]*})/g,'');
newText = newText.replace(/[·]/g,'');
$(rte).html(origText + newText + tailText);
$(rte).contents().last().focus();
},100);
});
body_doc - это редактируемый iframe. Если вы используете редактируемый div, вы можете удалить часть .find ('body'). В основном он обнаруживает событие вставки, проверяет местоположение, очищает новый текст и затем помещает очищенный текст туда, где он был вставлен. (Звучит сбивающе с толку ... но на самом деле это не так плохо, как кажется.
setTimeout необходим, потому что вы не можете захватить текст, пока он фактически не вставлен в элемент, вставка событий запускается, как только начинается паста.
Я сделал что-то подобное очень давно, когда полностью очистил содержимое в текстовом редакторе и преобразовал теги шрифтов в стили, brs в p и т. Д., Чтобы обеспечить его согласованность между браузерами и предотвратить попадание определенных некрасивых вещей. через пасту. Я взял свою рекурсивную функцию и извлек большую часть из нее, за исключением основной логики, это может быть хорошей отправной точкой («результат» - это объект, который накапливает результат, который, вероятно, занимает второй проход для преобразования в строку), если это то, что вам нужно:
var cleanDom = function(result, n) {
var nn = n.nodeName;
if(nn=="#text") {
var text = n.nodeValue;
}
else {
if(nn=="A" && n.href)
...;
else if(nn=="IMG" & n.src) {
....
}
else if(nn=="DIV") {
if(n.className=="indent")
...
}
else if(nn=="FONT") {
}
else if(nn=="BR") {
}
if(!UNSUPPORTED_ELEMENTS[nn]) {
if(n.childNodes.length > 0)
for(var i=0; i<n.childNodes.length; i++)
cleanDom(result, n.childNodes[i]);
}
}
}
У меня была похожая проблема, когда разрывы строк считались символами, и мне пришлось их удалить.
$(document).ready(function(){
$(".section-overview textarea").bind({
paste : function(){
setTimeout(function(){
//textarea
var text = $(".section-overview textarea").val();
// look for any "\n" occurences and replace them
var newString = text.replace(/\n/g, '');
// print new string
$(".section-overview textarea").val(newString);
},100);
}
});
});
Ненавижу это говорить, но в конце концов я перестал заставлять TinyMCE обрабатывать дерьмо Word так, как я хочу. Теперь мне просто отправляется электронное письмо каждый раз, когда пользовательский ввод содержит определенный HTML (например, ищите
), и я исправляю его вручную.
Вы можете использовать полный CKEditor , который очищает при вставке, либо просмотреть исходный код .
Можете ли вы вставить в скрытое текстовое поле, скопировать из того же текстового поля и вставить в целевое?
Как насчет кнопки «Вставить как обычный текст», которая отображает
, позволяя пользователю вставить туда текст? Таким образом, все теги будут удалены для вас. Вот что я делаю со своей CMS; Я бросил попытки навести порядок в Word.