سؤال

ما هي الجملة لإضافة الخارجية ملف CSS إلى jsf ؟

حاولت كل الطرق.لم يساعد.

1.

<head>
<style type="text/css">
    @import url("/styles/decoration.css");
</style>
</head>

2.

<head>
    <link rel="stylesheet" type="text/css" href="/styles/decoration.css" />
</head>
هل كانت مفيدة؟

المحلول

وانا اعتقد ان BalusC قد يكون جوابك.

ومع ذلك، أود أن أضيف بعض النقاط الإضافية:

وافترض أنك تقوم بتشغيل في الدلائل الفرعية لتطبيق ويب. كما تجربتي، قد ترغب في محاولة هذا: <link href="${facesContext.externalContext.requestContextPath}/css/style.css" rel="stylesheet" type="text/css"/>

والارتباط '${facesContext.externalContext.requestContextPath}/' سوف تساعدك على العودة فورا إلى جذر السياق.

تعديل : في إزالتها ابتداء / من 'href="/${facesContext.ex...'. إذا تم تشغيل التطبيق في سياق الجذر، يبدأ عنوان الموقع CSS مع // ومتصفحات لا يمكن العثور على CSS منذ يتم تفسيرها كما http://css/style.css.

نصائح أخرى

لم يستخدم الأولى ، ولكن الثاني هو بناء جملة صالحة وينبغي من الناحية الفنية العمل.إذا كان لا يعمل, ثم URL النسبي في href السمة هي ببساطة خاطئة.

في النسبية URL الرائدة مائل / يشير إلى المجال الجذر.حتى إذا كان JSF الصفحة على سبيل المثال طلب http://example.com/context/page.jsf, CSS URL الاطلاق نقطة http://example.com/styles/decoration.css.لمعرفة صالح URL النسبي, أنت بحاجة إلى معرفته URL المطلق من كل JSF الصفحة و ملف CSS و استخراج أحدهما من الآخر.

اسمحوا أعتقد أن الملف المغلق هو في الواقع يقع في http://example.com/context/styles/decoration.css, ثم تحتاج إلى إزالة الرائدة مائل بحيث يكون نسبة إلى الحالي السياق (واحد من page.jsp):

<link rel="stylesheet" type="text/css" href="styles/decoration.css" />

والمحدثة طريقة JSF 2.0 أرتب قليلا. بدلا من:

<link rel="stylesheet" type="text/css" href="#{request.contextPath}/css/compass.css"/>

وأنت الآن القيام بذلك:

<h:outputStylesheet library="css" name="compass.css"/>

ويجب وضع الموارد الأنماط في resources\css. أين موارد هي في نفس مستوى WEB-INF.

وأعتقد أن المشكلة Sergionni ذو شقين.

أولا، صحيح أن ما يسمى الجذر النسبي، كما قلت BalusC، في الواقع نطاق قريب، لذلك، في المثال نسبة إلى http://example.com/ وعدم http://example.com/context/.

وهكذا يجب عليك تحديد

<link rel="stylesheet" type="text/css" href="${request.contextPath}/styles/decoration.css" />

وراجع للشغل BalusC، تهانينا، هذه هي المرة الأولى التي أرى فيها هذا يفسر بشكل صحيح! أنا ناضلت الكثير جدا لاكتشاف هذه.

ولكن، إذا كنت ترغب في تبسيط واقتراح:

<link rel="stylesheet" type="text/css" href="styles/decoration.css" />

وعلى افتراض أن دير النمط هو sibbling الصفحة الحالية الخاصة بك، ثم يمكنك الحصول على المشكلة الثانية:

وأنت بعد ذلك إلى الأسلوب URL النسبي، وأنا جئت إلى هذه الصفحة عن طريق إلى الأمام وليس إعادة توجيه، قد ينخدع المتصفح الخاص بك وليس قادرا على تتبع مسار نسبي.

لحل هذه القضية الثانية، يجب إضافة هذه:

<head>
    <base href="http://${request.serverName}:${request.serverPort}${request.contextPath}${request.servletPath}" />

والعنصر الأساسي يجب أن يسبق أي صلة.

حسب الأمر قاعدة، كنت أقول متصفحك أين أنت حقا.

ونأمل أن يساعد.

وBTW شيء غريب آخر في هذا العالم للمساهمة في المشروع ونديفول:

وربط من صفحة إلى القالب facelet، وارتباط نسبي الجذر، وهذه المرة، بما في ذلك السياق ذلك:

<ui:composition template="/layouts/layout.xhtml">

وهذه الروابط حقا أن http://example.com/context/layouts/layout.xhtml

ووعدم http://example.com/layouts/layout.xhtml مثل ل<a> أو <link>.

وجان ماري الغاليوت سفينة شراعية

وحاول رمز أدناه لاستيراد المغلق في page.It للمساهمة في المشروع الخاص بك سوف تعمل بالتأكيد.

<style media="screen" type="text/css">

  @import "#{facesContext.externalContext.request.contextPath}/css/Ebreez.css"

</style>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top