用kotlinx.html

问题描述

我正在尝试使用kotlinx.html构建html布局页面。我可以创建主页,但是在将其分解为由单独功能生成的部分时遇到问题。我不知道如何将在单独函数中创建的html包含到主文档中。

我在使用不安全方面取得了成功,但我认为应该有更好的方法

我的单元测试如下:

import kotlinx.html.*
import kotlinx.html.stream.appendHTML
import kotlinx.html.stream.createHTML
import org.junit.jupiter.api.Test

class TestHtmlDsl {

    fun html(): String {
        val stringBuffer = StringBuffer()
        stringBuffer.appendHTML().html {
            head {
            }
            body {
                h1 { +"Head lines" }
                div {
                    id = "main div"
                    div {
                       strong {+"sub div"}
                    }
                    getDiv1()
                    getDiv2()
                }
            }
        }
        return stringBuffer.toString()
    }

    fun getDiv1(): DIV.() -> Unit {
        return {
            p { +"first try" }
        }
    }

    fun getDiv2(): String {
        return createHTML().div {
            p { +"second try" }
        }
    }

    @Test
    fun testHtml() {
        println(html())
    }
}

它产生输出

<html>
  <head></head>
  <body>
    <h1>Head lines</h1>
    <div id="main div">
      <div><strong>sub div</strong></div>
    </div>
  </body>
</html>

两个带有段落的divs

我正在此服务器端(jvm)运行。我在js中找到了一些示例,但没有运气

我很想在某个地方为kotlinx找到更好的文档

解决方法

import java.util.*; public class FirstDaysOfMonths { public static void main (String [] args) { Scanner input = new Scanner (System.in); //create scanner System.out.print("Enter a year: "); //request input from user int year = input.nextInt(); System.out.print("Enter the day of the week: "); String day = input.nextLine (); int dayOfWeek = 0; String monday = "Monday"; String tuesday = "Tuesday"; String wednesday = "Wednesday"; String thursday = "Thursday"; String friday = "Friday"; String saturday = "Saturday"; String sunday = "Sunday"; boolean isLeapYear = //check to see if it is a leap year (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); if (monday.equalsIgnoreCase(day)) dayOfWeek = 1; else if (tuesday.equalsIgnoreCase(day)) dayOfWeek = 2; else if (wednesday.equalsIgnoreCase(day)) dayOfWeek = 3; else if (thursday.equalsIgnoreCase(day)) dayOfWeek = 4; else if (friday.equalsIgnoreCase(day)) dayOfWeek = 5; else if (saturday.equalsIgnoreCase(day)) dayOfWeek = 6; else dayOfWeek = 0; System.out.print("January 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("February 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); if (isLeapYear) dayOfWeek = ((29 % 7) + dayOfWeek); else dayOfWeek = ((28 % 7) + dayOfWeek); System.out.print("March 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("April 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((30 % 7) + dayOfWeek); System.out.print("May 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("June 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((30 % 7) + dayOfWeek); System.out.print("July 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("August 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("September 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((30 % 7) + dayOfWeek); System.out.print("October 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((31 % 7) + dayOfWeek); System.out.print("Nobember 1," + year + "is ") ; if (dayOfWeek == 0) System.out.println(sunday); else if (dayOfWeek == 1) System.out.println(monday); else if (dayOfWeek == 2) System.out.println(tuesday); else if (dayOfWeek == 3) System.out.println(wednesday); else if (dayOfWeek == 4) System.out.println(thursday); else if (dayOfWeek == 5) System.out.println(friday); else System.out.println(saturday); dayOfWeek = ((30 % 7) + dayOfWeek); System.out.print("December 1," + year + "is ") ; switch (dayOfWeek) { case 0: System.out.println(sunday); break; case 1: System.out.println(monday); break; case 2: System.out.println(tuesday); break; case 3: System.out.println(wednesday); break; case 4: System.out.println(thursday); break; case 5: System.out.println(friday); break; default: System.out.println(saturday); break; } } 返回函数,因此您需要调用它:# Make predictions on test data batch using the loaded full model test_predictions = loaded_full_model.predict(test_data,verbose=1)

14/324 [>.............................] - ETA: 39s --------------------------------------------------------------------------- FailedPreconditionError Traceback (most recent call last) <ipython-input-98-1081792ff13f> in <module>() 1 # Make predictions on test data batch using the loaded full model 2 test_predictions = loaded_full_model.predict(test_data,----> 3 verbose=1) 8 frames /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name,num_outputs,inputs,attrs,ctx,name) 58 ctx.ensure_initialized() 59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle,device_name,op_name,---> 60 inputs,num_outputs) 61 except core._NotOkStatusException as e: 62 if name is not None: FailedPreconditionError: 2 root error(s) found. (0) Failed precondition: /content/drive/My Drive/Colab Notebooks/test/.ipynb_checkpoints; Is a directory [[{{node ReadFile}}]] [[IteratorGetNext]] [[IteratorGetNext/_2]] (1) Failed precondition: /content/drive/My Drive/Colab Notebooks/test/.ipynb_checkpoints; Is a directory [[{{node ReadFile}}]] [[IteratorGetNext]] 0 successful operations. 0 derived errors ignored. [Op:__inference_predict_function_189545] Function call stack: predict_function -> predict_function 返回getDiv1(),因此您需要附加它:getDiv1()()(请注意,HTML中的所有保留字符(例如getDiv2()String)都会被字符实体(+getDiv2()<)替换,因此无论如何您都不会选择这种方式

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...