JSP ve Ekleme Dizeleri JSP İfade Komut Dosyası tarafından döndürüldü

Aşağıdakileri yapmaya çalışırken, IE'de "Hata bekleniyor" komut dosyası hataları yaşıyorum:

alert(<%=SystemConfig.getTranslatedTextByKey(LBIBOConstants.LANG_KEY_MODIFYTIME_ALRTMISSINGA, userLocale)%> + strMessageString + <%=SystemConfig.getTranslatedTextByKey(LBIBOConstants.LANG_KEY_MODIFYTIME_ALRTMISSINGB, userLocale)%>);

Önceden bir araya getirilmiş bir dizeyle ilk başta uyarmak isterdim, ama ben de şanssız da denedim.

Tahminimce böyle bir şey yapamazsın, ama başka pek çok seçeneğim yok (kod başka biri tarafından geliştirildi, bu yüzden Scriptlet'lerden daha iyi alternatifler olduğunu anlıyorum).

Ne olursa olsun, JSP ifadeleri tarafından döndürülen bu dizeler, hepiniz merak ediyorsanız, bir dil paketinden yüklenen bir constants.java dosyasında bulunur. Bunları iki kez kontrol ettim ve onlar iyi.

Bir değer, sayfa içinde bir değer olduğunda ve diğer değerler komut dosyası etiketleri içinde olduğunda bu dizeleri nasıl ekleyebilirim? Mümkün mü?

0
İlginç bir şey, ben bir test olarak eklemeyi çıkardı ve sadece ALRTMISSINGA'nın ifadesini alert'de() kullandım ve bu da işe yaramıyor. Bu scriptler ile uğraşırken veya constants.java'mdan string sabitlerine erişmede en iyi yaklaşıma sahip olan var mı?
katma yazar aohm1989, kaynak
Vay, bunu popüler hale geldiğini fark ettikten sonra tekrar ziyaret ettim ve sana onun yerine yaptığım her şeyi anlatacağım. Bu, sonuçta uluslararasılaşma içindi ve bu durumda, diğer diller için TAMAMEN farklı bir sıraya girmeye zorlanabilecek dizeleri eklemek istemiyorsunuz. Bana bunun neden iyi bir fikir olduğunu düşündüğünü sorma. Bu kodu artık kullanmıyorum, bunlar karanlık zamanlardı, ama ne kadar ilerlediğimi görmek eğlenceliydi.
katma yazar aohm1989, kaynak

1 cevap

JSP = sunucu tarafı

JavaScript = istemci tarafı

JSP'nin oluşturduğu JavaScript kodu geçerli bir JavaScript kodu olmalıdır. Tarayıcınızın "Sayfa kaynağını görüntüle" menü öğesini kullanarak oluşturulmuş JavaScript'e bakın ve geçerli bir JavaScript kodu oluşturacak şekilde JSP kodunu düzeltin.

JSP'niz yanlış HTML kodu oluşturduysa tam olarak nasıl yaparsınız.

Muhtemelen bazı alıntıları kaçırıyorsun. Ancak, ayrıca, betik ifadesinin, JavaScript-escaped olması gereken karakterleri döndürmediğinden emin olun. Veya bu karakterlerden kaçmak için commons-lang StringEscapeUtils.escapeEcmaScript kullanın:

alert('<%= ... %>' + strMessageString + '<%= ... %>');
      ^----------^----------------------^----------^-- quotes!

Ve ifadeler (...) ifadeleriniz kaçmış olmalıydı:

StringEscapeUtils.escapeEcmaScript(yourOriginalExpression)
1
katma
Teşekkürler, bu, Google’ın söylediklerinin çoğunu temizlemeye yardımcı olur.
katma yazar aohm1989, kaynak
Aşağıdakileri denedim: test = '<% = SystemConfig.getTranslatedTextByKey (LBIBOConstants.LANG_ & zwnj; KEY_MODIFYTIME_ALRTM & zwnj; ISSINGA, userLocale)%>' + strMessageString + '<% = SystemConfig.getTranslatedTextByKey (LBIBOConstants.LANG_ & zwnj; KEY_MODIFYTIME_ALRTM & zwnj; ISSINGB, userLocale)%> '; uyarı (deney); Ve bu, sayfadaki sonlandırılmamış bir dize sabit hatası veriyor. Ayrıca, yukarıda ne yazdığınızı da denedim ve aynı hatayı aldım. Fikirler?
katma yazar aohm1989, kaynak
Kaynak görüntüleme aşağıdakileri gösterir: alert ('Aşağıdaki alanlarda eksik veya geçersiz veriler var:' + strMessageString + 'Devam etmeden önce lütfen bu formdaki verileri doldurun!');
katma yazar aohm1989, kaynak
Oh bekle ... Sanırım şimdi denemek ve yapmak için söylediklerinizi anlıyorum;) Size bildireceğim.
katma yazar aohm1989, kaynak
Apache StringEscapeUtils'in bir alternatifi var mı, yoksa bu apache commons jar'ına benim lib'mda ihtiyacım olacak mı?
katma yazar aohm1989, kaynak
Teşekkürler adam, aslında sorunun ne olduğunu öğrendim. Bu uluslararasılaşma kodu olduğu için, daha önce çok sayıda kodlanmış metni dosyalardan aldık ve Constants'a yüklenecek dil paketlerine koyduk. Kaldırılan bir önceki metin, yeni satır karakterleri içeriyordu ve kaynağı görüntülediğinizde sayfada bir aralığa neden oluyor ve dolayısıyla "beklenen", "veya") "hatasını algılamak daha zor oluyor.
katma yazar aohm1989, kaynak
Kaynağa bakabilir ve kendinden kaçabilirsin. Fakat bu ek bağımlılık konusunda çok fazla umurumda değil.
katma yazar JB Nizet, kaynak
escapeEcmaScript, newline char'i JavaScript çıkış sırasına dönüştürürdü: \ n. Daima düzgün kaçış!
katma yazar JB Nizet, kaynak